====== Origin Ver. 9.1 MSI Installer ====== Files can be downloaded at Download here: [[http://www.originlab.com/index.aspx?go=products&pid=1852|Download]] By --- //[[tobias.friede@wki.fraunhofer.de|tobias]] 2013/12/13 09:08// Tree:\\ ├── CLIENT_DATA │   ├── additional │   │   ├── additional_actions.opsiinc │   │   ├── additional_sections.opsiinc │   ├── config.opsiinc │   ├── delsub.ins │   ├── files │   │   ├── MSI │   │   │   ├── Origin91_x64 │   │   │   │   └── setup.msi │   │   │   ├── Origin91_x86 │   │   │   │   └── setup.msi │   │   │   ├── vcreddist_x64_2008_x64 │   │   │   │   ├── vc_red.cab │   │   │   │   └── vc_red.msi │   │   │   ├── vcredist_x64-2012_x64 │   │   │   │   ├── vcRuntimeAdditional_amd64 │   │   │   │   │   ├── cab1.cab │   │   │   │   │   └── vc_runtimeAdditional_x64.msi │   │   │   │   └── vcRuntimeMinimum_amd64 │   │   │   │   ├── cab1.cab │   │   │   │   └── vc_runtimeMinimum_x64.msi │   │   │   ├── vcredist_x86-2008_x86_x64 │   │   │   │   ├── vc_red.cab │   │   │   │   └── vc_red.msi │   │   │   └── vcredist_x86-2012_x86_x64 │   │   │   ├── vcRuntimeAdditional_x86 │   │   │   │   ├── cab1.cab │   │   │   │   └── vc_runtimeAdditional_x86.msi │   │   │   └── vcRuntimeMinimum_x86 │   │   │   ├── cab1.cab │   │   │   └── vc_runtimeMinimum_x86.msi │   │   └── use_server.lic │   ├── origin9.1.png │   ├── setup.ins │   ├── uninstall.ins │   └── vars.opsiinc ├── OPSI │   ├── control │   ├── postinst │   └── preinst ==== What you need ==== *the MSI Installer from Additive (64bit + 32bit) *the MSI files from VISUAL C++ 2012 REDISTRIBUTABLE (64bit + 32bit) [[http://http://www.applepie.se/extract-msi-from-visual-c-2012-redistributable|How to get the MSI Installer:]] *the MSI files from VISUAL C++ 2008 REDISTRIBUTABLE (64bit + 32bit) ==== additional_actions.opsiinc ==== ; Insert additional Sektions (only the section name, not the section) if ($INST_SystemType$ = "x86 System") Message "Lizensiere Origin 9.1" files_lic_x86 Message "Installiere benoetigte Laufzeitumgebungen" winbatch_vcredist_x86 else Message "Lizensiere Origin 9.1" files_lic_x64 Message "Installiere benoetigte Laufzeitumgebungen" winbatch_vcredist_x64 endif ==== additional_sections.opsiinc ==== ; Insert the section, not the section name !!! [files_lic_x86] copy -s "%ScriptPath%\files\use_server.lic" "%ProgramFilesDir%\Originlab\Origin 9.1\License" [files_lic_x64] copy -s "%ScriptPath%\files\use_server.lic" "%ProgramFiles64Dir%\Originlab\Origin 9.1\License" [winbatch_vcredist_x86] msiexec -i %scriptpath%\files\MSI\vcredist_x86-2008_x86_x64\vc_red.msi -passive msiexec -i %scriptpath%\files\MSI\vcredist_x86-2012_x86_x64\vcRuntimeMinimum_x86\vc_runtimeMinimum_x86.msi -passive ADDEPLOY=1 msiexec -i %scriptpath%\files\MSI\vcredist_x86-2012_x86_x64\vcRuntimeAdditional_x86\vc_runtimeAdditional_x86.msi -passive ADDEPLOY=1 [winbatch_vcredist_x64] msiexec -i %scriptpath%\files\MSI\vcreddist_x64_2008_x64\vc_red.msi -passive msiexec -i %scriptpath%\files\MSI\vcredist_x86-2008_x86_x64\vc_red.msi -passive msiexec -i %scriptpath%\files\MSI\vcredist_x64-2012_x64\vcRuntimeMinimum_amd64\vc_runtimeMinimum_x64.msi -passive ADDEPLOY=1 msiexec -i %scriptpath%\files\MSI\vcredist_x64-2012_x64\vcRuntimeAdditional_amd64\vc_runtimeAdditional_x64.msi -passive ADDEPLOY=1 msiexec -i %scriptpath%\files\MSI\vcredist_x86-2012_x86_x64\vcRuntimeMinimum_x86\vc_runtimeMinimum_x86.msi -passive ADDEPLOY=1 msiexec -i %scriptpath%\files\MSI\vcredist_x86-2012_x86_x64\vcRuntimeAdditional_x86\vc_runtimeAdditional_x86.msi -passive ADDEPLOY=1 ==== config.opsiinc ==== ; ---------------------------------------------------------------- ; - edit the following values - ; ---------------------------------------------------------------- ;$ProductId$ should be the name of the product in opsi ; therefore please: only lower letters, no umlauts, ; no white space use '-' as a seperator Set $ProductId$ = "Origin9.1" Set $MinimumSpace$ = "500 MB" set $setupcommand32$ = "msiexec /i %ScriptPath%\files\MSI\Origin91_x86\setup.msi /passive ALLUSERS=2 REBOOT=ReallySuppress PIDKEY=SF8T5-3089-7902407" set $setupcommand64$ = "msiexec /i %ScriptPath%\files\MSI\Origin91_x64\setup.msi /passive ALLUSERS=2 REBOOT=ReallySuppress PIDKEY=SF8T5-3089-7902407" Set $INST_SystemType$ = GetSystemType set $INST_architecture$ = GetProductProperty("install_architecture","system specific") Set $LogDir$ = "%SystemDrive%\tmp" ; ---------------------------------------------------------------- ; - Currently installing MSIs ; ---------------------------------------------------------------- set $installed_MSI_32$ = createStringList (' ') set $installed_MSI_64$ = createStringList ('{3C28BFD4-90C7-3138-87EF-418DC16E9598}','{5AF4E09F-5C9B-3AAF-B731-544D3DC821DD}','{5FCE6D76-F5DC-37AB-B2B8-22AB8CEDB1D4}') set $installed_MSI_Both$ = createStringList ('{912C907D-E18C-4560-859B-2B1EA969BAB5}','{E824E81C-80A4-3DFF-B5F9-4842A9FF5F7F}','{6C772996-BFF3-3C8C-860B-B3D48FF05D65}','{9BE518E6-ECC6-35A9-88E4-87755C07200F}') ; ---------------------------------------------------------------- ; - MSIID MAPP / Aktuelle MSIIDs ; ---------------------------------------------------------------- ;32 ; - ;64 ;Origin91_x64 - {912C907D-E18C-4560-859B-2B1EA969BAB5} ;vcredist_x64-2012 Additional - {3C28BFD4-90C7-3138-87EF-418DC16E9598} ;vcredist_x64-2012 Minimum - {5AF4E09F-5C9B-3AAF-B731-544D3DC821DD} ;vcredist_x64_2008 - {5FCE6D76-F5DC-37AB-B2B8-22AB8CEDB1D4} ;Both ;Origin91_x86 - {912C907D-E18C-4560-859B-2B1EA969BAB5} ;vcredist_x86-2012 Additional - {6C772996-BFF3-3C8C-860B-B3D48FF05D65} ;vcredist_x86-2012 Minimum - {E824E81C-80A4-3DFF-B5F9-4842A9FF5F7F} ;vcredist_x86-2008 - {9BE518E6-ECC6-35A9-88E4-87755C07200F} ; ---------------------------------------------------------------- ; - MSIs from outdated packages ; ---------------------------------------------------------------- set $MSI_32$ = createStringList ('{9DE4251D-D6A0-445B-A006-42F20D46CB62}') set $MSI_64$ = createStringList (' ') set $MSI_Both$ = createStringList (' ') ; ---------------------------------------------------------------- ; - Additional Configuration ; ---------------------------------------------------------------- set $checktask$ = "false" set $killtask$ = "false" set $SearchProcess$ = createStringList ('cmd.exe') ==== delsub.ins ==== ; ---------------------------------------------------------------- ; - 32Bit - ; ---------------------------------------------------------------- if ($INST_SystemType$ = "x86 System") Message "Uninstalling " + $ProductId$ + " 32 Bit..." if not (GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $ID$ + "] DisplayName") = "") comment "MSI id " + $ID$ + " found in registry, starting msiexec to uninstall" Winbatch_uninstall_msi sub_check_exitcode endif endif ; ---------------------------------------------------------------- ; - 64Bit - ; ---------------------------------------------------------------- if ($INST_SystemType$ = "64 Bit System") Message "Uninstalling " + $ProductId$ + " 64 Bit..." if not (GetRegistryStringValue64("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $ID$ + "] DisplayName") = "") comment "MSI id " + $ID$ + " found in registry, starting msiexec to uninstall" Winbatch_uninstall_msi sub_check_exitcode endif endif ; ---------------------------------------------------------------- ; - Both - ; ---------------------------------------------------------------- Message "Uninstalling " + $ProductId$ + " Both..." if not (GetRegistryStringValue("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $ID$ + "] DisplayName") = "") comment "MSI id " + $ID$ + " found in registry, starting msiexec to uninstall" Winbatch_uninstall_msi sub_check_exitcode endif [Winbatch_uninstall_msi] msiexec /x $ID$ /qb! REBOOT=ReallySuppress [Sub_check_exitcode] comment "Test for installation success via exit code" set $ExitCode$ = getLastExitCode ; informations to exit codes see ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx ; http://msdn.microsoft.com/en-us/library/aa368542.aspx if ($ExitCode$ = "0") comment "Looks good: setup program gives exitcode zero" else comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ if ($ExitCode$ = "1605") comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed." comment "Uninstall of a not installed product failed - no problem" else if ($ExitCode$ = "1641") comment "looks good: setup program gives exitcode 1641" comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success." else if ($ExitCode$ = "3010") comment "looks good: setup program gives exitcode 3010" comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success." else logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$ isFatalError endif endif endif endif ==== setup.ins ==== [Actions] SetLogLevel=6 requiredWinstVersion >= "4.10.8.6" ; Include configuration include_insert "%scriptpath%\vars.opsiinc" include_insert "%scriptpath%\config.opsiinc" ; ---------------------------------------------------------------- ; - PreCheck & Settings ; ---------------------------------------------------------------- if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$)) LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$ isFatalError ; Stop process and set installation status to failed else comment "Show product picture" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ endif if ( $checktask$ = "true") for %s% in $SearchProcess$ do sub_checktask else comment "Checktask is off" endif ; ---------------------------------------------------------------- ; - Remove Aktionen ; ---------------------------------------------------------------- comment "Remove MSI from System" if ($INST_SystemType$ = "x86 System") for %s% in $MSI_32$ do sub_open_dellsub else for %s% in $MSI_64$ do sub_open_dellsub endif for %s% in $MSI_Both$ do sub_open_dellsub ; ---------------------------------------------------------------- ; - Setup Aktionen ; ---------------------------------------------------------------- if ($INST_SystemType$ = "x86 System") Message "Installing " + $ProductId$ + " 32 Bit..." comment "Start setup program" Winbatch_install_32 Sub_check_exitcode endif if ($INST_SystemType$ = "64 Bit System") Message "Installing " + $ProductId$ + " 64 Bit..." comment "Start setup program" Winbatch_install_64 Sub_check_exitcode endif include_append "%scriptpath%/additional/additional_sections.opsiinc" include_insert "%scriptpath%/additional/additional_actions.opsiinc" ; ---------------------------------------------------------------- ; - Sektionen ; ---------------------------------------------------------------- [Winbatch_install_32] $setupcommand32$ [Winbatch_install_64] $setupcommand64$ [sub_open_dellsub] set $ID$ = "%s%" Sub "%ScriptPath%\delsub.ins" [sub_checktask] set $currentchecktask$ = "%s%" set $tasklist$ = getOutStreamFromSection('DosInAnIcon_checkprocess') set $processVAR$ = unquote(takeString(1,$tasklist$), '"') if ($processVAR$ = $currentchecktask$) Message = "Prozess gefunden" if ($killtask$ = "true") killtask $currentchecktask$ else message "killtask is set to false" endif if ($fatalerror$ = "true") pause $userfail$ isFatalError else message "fatalError is set to false" endif message "Prozess nicht gefunden - do nothing" endif [DosInAnIcon_checkprocess] @echo off TASKLIST /FI "IMAGENAME eq $subvar$" /fo CSV [Sub_check_exitcode] comment "Test for installation success via exit code" set $ExitCode$ = getLastExitCode ; informations to exit codes see ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx ; http://msdn.microsoft.com/en-us/library/aa368542.aspx if ($ExitCode$ = "0") comment "Looks good: setup program gives exitcode zero" else comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ if ($ExitCode$ = "1605") comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed." comment "Uninstall of a not installed product failed - no problem" else if ($ExitCode$ = "1641") comment "looks good: setup program gives exitcode 1641" comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success." else if ($ExitCode$ = "3010") comment "looks good: setup program gives exitcode 3010" comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success." else logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$ isFatalError endif endif endif endif ==== uninstall.ins ==== [Actions] SetLogLevel=6 requiredWinstVersion >= "4.10.8.6" include_insert "%scriptpath%\vars.opsiinc" include_insert "%scriptpath%\config.opsiinc" comment "Show product picture" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ comment "Remove MSI from System" if ($INST_SystemType$ = "x86 System") for %s% in $installed_MSI_32$ do sub_open_dellsub else for %s% in $installed_MSI_64$ do sub_open_dellsub endif for %s% in $installed_MSI_Both$ do sub_open_dellsub [sub_open_dellsub] set $ID$ = "%s%" Sub "%ScriptPath%\delsub.ins" ==== vars.ins ==== ; ---------------------------------------------------------------- ; - DefVar / DefString ; ---------------------------------------------------------------- DefVar $MsiId32$ DefVar $MsiId64$ DefVar $LogDir$ DefVar $ProductId$ DefVar $MinimumSpace$ DefVar $InstallDir32$ DefVar $InstallDir64$ DefVar $ExitCode$ DefVar $INST_SystemType$ DefVar $INST_architecture$ DefVar $setupcommand32$ DefVar $setupcommand64$ DefVar $ID$ DefVar $subvar$ DefVar $killtask$ DefVar $checktask$ DefStringList $MSI_32$ DefStringList $MSI_64$ DefStringList $MSI_Both$ DefStringlist $installed_MSI_Both$ DefStringList $installed_MSI_32$ DefStringList $installed_MSI_64$ DefStringList $processlist$ DefStringList $process$ DefStringList $process_unquote$ DefStringList $SearchProcess$ DefStringList $currentchecktask$ DefStringList $processVAR$