;Preprocessor variables ;My Dynamo path #dim dynamoPath[2] #define dynamoPath[0] "Dynamo\Dynamo Revit\1.3" #define dynamoPath[1] "Dynamo\Dynamo Revit\2.0" [Setup] SourceDir=..\ ;give a valid path where your output exe files should be compiled to! OutputDir=userdocs:\SoftDev\ OutputBaseFilename=DTU_Dynamo_user AppName=Dynamo ;Versionnumber must be higher to install updates --> I use dates AppVersion=2018.1001.0 ;Replace --> author AppCopyright= author ;Replace --> organization AppPublisher= organization RestartIfNeededByRun=false AllowCancelDuringInstall=false CreateAppDir=false UsePreviousGroup=false AppendDefaultGroupName=false SolidCompression=true Compression=lzma2/ultra InternalCompressLevel=ultra Uninstallable=false PrivilegesRequired=none [Files] ;Default filestructure ;This part is ONLY needed if dynamo hasnt been installed and activated before this executable is being activated! ;look in the attached zip file for default content needed by the executable is runned before dynamo has been activated! ;Notice the source folder location if you want to use the default (from the zip file) content! Source: Content\*.*; DestDir: {userappdata}; Flags: createallsubdirs recursesubdirs; Permissions: powerusers-full [Registry] ;Version number ;Replace --> (your organization id) Root: HKCU; Subkey: Software\(your organization id); ValueType: string; ValueName: Dynamo; ValueData: {#SetupSetting("AppVersion")} [code] //Get the AppVersion function CurrentVersion(): String; begin Result := ExpandConstant('{#SetupSetting("AppVersion")}'); end; //Get the Registry value //Replace --> (your organization id) function GetInstalledVersion(): String; var InstalledVersion: String; begin InstalledVersion:= ''; RegQueryStringValue(HKCU, 'Software\(your organization id)', 'Dynamo', InstalledVersion); Result:= InstalledVersion; end; //On initialize, check if higher value function InitializeSetup(): boolean; begin if (GetInstalledVersion() < CurrentVersion()) then result := true else result := false; end; //Modify the XML document procedure DynamoXML(const AFileName, APath, AValue: string); var XMLDocument, XMLNewNode, XMLRootNode : Variant; begin XMLDocument := CreateOleObject('Msxml2.DOMDocument.6.0'); XMLDocument.async := False; XMLDocument.load(AFileName); if XMLDocument.parseError.errorCode <> 0 then exit; XMLNewNode := XMLDocument.createElement('string'); XMLDocument.setProperty('SelectionLanguage', 'XPath'); XMLRootNode := XMLDocument.selectSingleNode(APath); XMLRootNode.appendChild (XMLNewNode); XMLRootNode.lastChild.text := AValue; XMLDocument.save(AFileName); end; //On exit, modify //Replace --> (your organization id) procedure CurStepChanged(CurStep: TSetupStep); begin if CurStep = ssPostInstall then begin DynamoXML(ExpandConstant('{userappdata}\{#dynamoPath[0]}\DynamoSettings.xml'),'//BackupFiles',ExpandConstant('{userappdata}\Dynamo\Dynamo Revit\backup\backup.DYN')); DynamoXML(ExpandConstant('{userappdata}\{#dynamoPath[0]}\DynamoSettings.xml'),'//CustomPackageFolders',ExpandConstant('{userappdata}\{#dynamoPath[0]}')); DynamoXML(ExpandConstant('{userappdata}\{#dynamoPath[0]}\DynamoSettings.xml'),'//CustomPackageFolders',ExpandConstant('{commonappdata}\Dynamo\All')); DynamoXML(ExpandConstant('{userappdata}\{#dynamoPath[0]}\DynamoSettings.xml'),'//CustomPackageFolders',ExpandConstant('{commonappdata}\Dynamo\130')); DynamoXML(ExpandConstant('{userappdata}\{#dynamoPath[1]}\DynamoSettings.xml'),'//BackupFiles',ExpandConstant('{userappdata}\Dynamo\Dynamo Revit\backup\backup.DYN')); DynamoXML(ExpandConstant('{userappdata}\{#dynamoPath[1]}\DynamoSettings.xml'),'//CustomPackageFolders',ExpandConstant('{userappdata}\{#dynamoPath[1]}')); DynamoXML(ExpandConstant('{userappdata}\{#dynamoPath[1]}\DynamoSettings.xml'),'//CustomPackageFolders',ExpandConstant('{commonappdata}\Dynamo\All')); DynamoXML(ExpandConstant('{userappdata}\{#dynamoPath[1]}\DynamoSettings.xml'),'//CustomPackageFolders',ExpandConstant('{commonappdata}\Dynamo\200')); end; end;