;Preprocessor variables ;My Dynamo path ;Replace --> (your login) #dim sourcePackages[4] #define sourcePackages[0] "C:\Users\(your login)\AppData\Roaming\Dynamo\Content\packages" #define sourcePackages[1] "C:\Users\(your login)\AppData\Roaming\Dynamo\Dynamo Revit\1.3\packages" #define sourcePackages[2] "C:\Users\(your login)\AppData\Roaming\Dynamo\Dynamo Revit\2.0\packages" ;Dynamo path ;Replace --> (your organization id) #dim destinationPackages[3] #define destinationPackages[0] "{commonappdata}\Dynamo\(your organization id)\All\packages" #define destinationPackages[1] "{commonappdata}\Dynamo\(your organization id)\130\packages" #define destinationPackages[2] "{commonappdata}\Dynamo\(your organization id)\200\packages" [Setup] ;SourceDir=..\ ;give a valid path where your output exe files should be compiled to! OutputDir=userdocs:\SoftDev\ OutputBaseFilename=Dynamo_machine AppName=Dynamo ;Versionnumber must be higher to install updates --> I use dates AppVersion=2018.1101.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 ;Normally will changes on a computer level in an organization require more than user privileges PrivilegesRequired=poweruser ;PrivilegesRequired=none [InstallDelete] ;Clean old packages Type: filesandordirs; Name: {#destinationPackages[0]} Type: filesandordirs; Name: {#destinationPackages[1]} Type: filesandordirs; Name: {#destinationPackages[2]} [Files] ;Packages to include ;Do only select those that shold be common, you might have several more packages installed by yourself ;Version specific packages, means that it takes those that are for either 1.3 og 2.0 environment ;In the example is all packages in the "source" folder selected! Source: {#sourcePackages[1]}\*; DestDir: {#destinationPackages[1]}; Excludes: dyf\backup; Flags: recursesubdirs createallsubdirs Source: {#sourcePackages[2]}\*; DestDir: {#destinationPackages[2]}; Excludes: dyf\backup; Flags: recursesubdirs createallsubdirs ;Common packages, means that the package is used both in the 1.3 og 2.0 environment ;In the example is specific packages in the "source" selected! Source: {#sourcePackages[0]}\Dynamic CSharp Interpreter\*; DestDir: {#destinationPackages[0]}\Dynamic CSharp Interpreter; Excludes: dyf\backup; Flags: recursesubdirs createallsubdirs Source: {#sourcePackages[0]}\archi-lab.net\*; DestDir: {#destinationPackages[0]}\archi-lab.net; Excludes: dyf\backup; Flags: recursesubdirs createallsubdirs Source: {#sourcePackages[0]}\Data-Shapes\*; DestDir: {#destinationPackages[0]}\Data-Shapes; Excludes: dyf\backup; Flags: recursesubdirs createallsubdirs Source: {#sourcePackages[0]}\Rhythm\*; DestDir: {#destinationPackages[0]}\Rhythm; Excludes: dyf\backup; Flags: recursesubdirs createallsubdirs Source: {#sourcePackages[0]}\spring nodes\*; DestDir: {#destinationPackages[0]}\spring nodes; Excludes: dyf\backup; Flags: recursesubdirs createallsubdirs Source: {#sourcePackages[0]}\Ampersand\*; DestDir: {#destinationPackages[0]}\Ampersand; Excludes: dyf\backup; Flags: recursesubdirs createallsubdirs Source: {#sourcePackages[0]}\BumbleBee\*; DestDir: {#destinationPackages[0]}\BumbleBee; Excludes: dyf\backup; Flags: recursesubdirs createallsubdirs Source: {#sourcePackages[0]}\MEPover\*; DestDir: {#destinationPackages[0]}\MEPover; Excludes: Backup\; Flags: recursesubdirs createallsubdirs Source: {#sourcePackages[0]}\Structural Analysis for Dynamo\*; DestDir: {#destinationPackages[0]}\Structural Analysis for Dynamo; Excludes: dyf\backup; Flags: recursesubdirs createallsubdirs Source: {#sourcePackages[0]}\Optimo\*; DestDir: {#destinationPackages[0]}\Optimo; Excludes: dyf\backup; Flags: recursesubdirs createallsubdirs Source: {#sourcePackages[0]}\Honeybee\*; DestDir: {#destinationPackages[0]}\Honeybee; Excludes: dyf\backup; Flags: recursesubdirs createallsubdirs Source: {#sourcePackages[0]}\Ladybug\*; DestDir: {#destinationPackages[0]}\Ladybug; Excludes: dyf\backup; Flags: recursesubdirs createallsubdirs [Registry] ;Version number ;Replace --> (your organization id) Root: HKLM; 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(HKLM, '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;