====== LibreOffce 4.0 ====== --- //[[darpakiss@gmail.com|darpakiss]] 2013/02/20 15:38// Tested on Windows 7 64bit Tested with opsi 4.0.2\\ required Winst Version >= 4.11.3.1\\ Files can be downloaded at [[http://www.libreoffice.org/download/?type=win-x86|here]] Tree:\\ CLIENT_DATA check_msi-exitcode.ins delsub.ins hunart-0.3.oxt LibreOffice_4.0.0_Win_x86_helppack_de.msi LibreOffice_4.0.0_Win_x86_helppack_en-US.msi LibreOffice_4.0.0_Win_x86_helppack_fr.msi LibreOffice_4.0.0_Win_x86_helppack_hu.msi LibreOffice_4.0.0_Win_x86.msi Libreoffice.png numbertext-0.9.4.oxt Sun_ODF_Template_Pack2_en-US.oxt Sun_ODF_Template_Pack_en-US.oxt setup.ins uninstall.ins OPSI control ==== Steps ==== - Download the installer and the helppacks from [[http://www.libreoffice.org/download/?type=win-x86|here]] - Download the needed extensions from [[http://extensions.libreoffice.org/|here]] - You can customize the installer if you follow [[https://wiki.documentfoundation.org/Deployment_and_Migration|this]] instruction, and change the value of //**Inst_Cmd32**// variable - You should create a logo from an images from internet, and save with name //Libreoffice.png// - If you want to use from other path, check and change the path of //check_msi-exitcode.ins// in the scripts ==== setup.ins ==== [Initial] LogLevel=9 ; Log Errors in Logfile but don't abort: ExitOnError=false ; Show syntax errors in the script: ScriptErrorMessages=on ; Dont trace step by step through the script: TraceMode=off ; let started programs run in front of the winst window StayOnTop=false [Actions] requiredWinstVersion >= "4.10.8.6" DefVar $UninstallProgram32$ DefVar $UninstallProgram64$ DefVar $LogDir$ DefVar $ProductId$ DefVar $MinimumSpace$ DefVar $InstallDir32$ DefVar $InstallDir64$ DefVar $ExitCode$ DefVar $LicenseRequired$ DefVar $LicenseKey$ DefVar $LicensePool$ DefVar $INST_SystemType$ DefVar $INST_version$ DefVar $Lang$ DefVar $Extension$ DefVar $Version$ DefVar $Inst_Cmd32$ DefVar $Inst_Cmd64$ DefVar $Inst_Prg32$ DefVar $Inst_Prg64$ DefVar $Uninst_Prg$ DefVar $InstallCommandList$ DefStringList $result1$ DefVar $Inst_Help_HU_32$ DefVar $Inst_Help_US_32$ DefVar $Inst_Help_FR_32$ DefVar $Inst_Help_DE_32$ Set $INST_SystemType$ = GetSystemType set $Lang$ = GetProductProperty("lang","US English") set $Extension$ = GetProductProperty("extension","Yes") Set $LogDir$ = "%SystemDrive%\tmp" Set $InstallCommandList$ = "" ; ---------------------------------------------------------------- ; - Please 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$ = "Libreoffice" Set $Version$ = "4.0.0" Set $MinimumSpace$ = "300 MB" ; the path were we find the product after the installation Set $InstallDir32$ = "%ProgramFiles32Dir%\LibreOffice 4.0\" Set $Inst_Prg32$ = "LibreOffice_4.0.0_Win_x86.msi" Set $Inst_Prg64$ = "LibreOffice_4.0.0_Win_x86.msi" Set $Inst_Help_HU_32$ = "LibreOffice_4.0.0_Win_x86_helppack_hu.msi" Set $Inst_Help_US_32$ = "LibreOffice_4.0.0_Win_x86_helppack_en-US.msi" Set $Inst_Help_FR_32$ = "LibreOffice_4.0.0_Win_x86_helppack_fr.msi" Set $Inst_Help_DE_32$ = "LibreOffice_4.0.0_Win_x86_helppack_de.msi" Set $LicenseRequired$ = "false" Set $LicensePool$ = "p_" + $ProductId$ Set $Uninst_Prg$ = "uninstall.exe" Set $Inst_Cmd32$ = '/quiet /norestart ' Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'SELECT_WORD=1 SELECT_EXCEL=1 SELECT_POWERPOINT=1 ' Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'REGISTER_ALL_MSO_TYPES=1 RebootYesNo=No ISCHECKFORPRODUCTUPDATES=0 QUICKSTART=0 VC_REDIST=1 ' Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'ADDLOCAL=ALL REMOVE=gm_o_Quickstart,gm_o_jf_Palm,gm_o_jf_Pocketpc,gm_r_ex_Dictionary_Af,gm_r_ex_Dictionary_An,' Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'gm_r_ex_Dictionary_Ar,gm_r_ex_Dictionary_Be,gm_r_ex_Dictionary_Bg,gm_r_ex_Dictionary_Bn,gm_r_ex_Dictionary_Br,' Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'gm_r_ex_Dictionary_Pt_Br,gm_r_ex_Dictionary_Pt_Pt,gm_r_ex_Dictionary_Ca,gm_r_ex_Dictionary_Cs,gm_r_ex_Dictionary_Da,' Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'gm_r_ex_Dictionary_Nl,gm_r_ex_Dictionary_Et,gm_r_ex_Dictionary_Gd,gm_r_ex_Dictionary_Gl,gm_r_ex_Dictionary_Gu,' Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'gm_r_ex_Dictionary_He,gm_r_ex_Dictionary_Hi,gm_r_ex_Dictionary_It,gm_r_ex_Dictionary_Ku_Tr,gm_r_ex_Dictionary_Lt,' Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'gm_r_ex_Dictionary_Lv,gm_r_ex_Dictionary_Ne,gm_r_ex_Dictionary_No,gm_r_ex_Dictionary_Oc,gm_r_ex_Dictionary_Pl,' Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'gm_r_ex_Dictionary_Ro,gm_r_ex_Dictionary_Ru,gm_r_ex_Dictionary_Si,gm_r_ex_Dictionary_Sk,gm_r_ex_Dictionary_Sl,gm_r_ex_Dictionary_El,' Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'gm_r_ex_Dictionary_Es,gm_r_ex_Dictionary_Sv,gm_r_ex_Dictionary_Te,gm_r_ex_Dictionary_Th,gm_r_ex_Dictionary_Uk,gm_r_ex_Dictionary_Vi,' Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'gm_r_ex_Dictionary_Zu,' ; ---------------------------------------------------------------- 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$ if FileExists("%ScriptPath%\delsub.ins") comment "Start uninstall sub section" Sub "%ScriptPath%\delsub.ins" endif if $LicenseRequired$ = "true" comment "Licensing required, reserve license and get license key" Sub_get_licensekey endif if $Lang$ = "French" Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'gm_r_ex_Dictionary_De UI_LANGS=en_US,fr,hu' Set $InstallCommandList$ = $InstallCommandList$ + "MsiExec.exe /i %ScriptPath%\" + "$Inst_Help_HU_32$" + " /quiet /norestart::" Set $InstallCommandList$ = $InstallCommandList$ + "MsiExec.exe /i %ScriptPath%\" + "$Inst_Help_US_32$" + " /quiet /norestart::" Set $InstallCommandList$ = $InstallCommandList$ + "MsiExec.exe /i %ScriptPath%\" + "$Inst_Help_FR_32$" + " /quiet /norestart::" endif if $Lang$ = "German" Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'gm_r_ex_Dictionary_Fr UI_LANGS=en_US,de,hu' Set $InstallCommandList$ = $InstallCommandList$ + "MsiExec.exe /i %ScriptPath%\" + "$Inst_Help_HU_32$" + " /quiet /norestart::" Set $InstallCommandList$ = $InstallCommandList$ + "MsiExec.exe /i %ScriptPath%\" + "$Inst_Help_US_32$" + " /quiet /norestart::" Set $InstallCommandList$ = $InstallCommandList$ + "MsiExec.exe /i %ScriptPath%\" + "$Inst_Help_DE_32$" + " /quiet /norestart::" endif if $Lang$ = "Hungarian" Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'gm_r_ex_Dictionary_Fr,gm_r_ex_Dictionary_De UI_LANGS=en_US,hu' Set $InstallCommandList$ = $InstallCommandList$ + "MsiExec.exe /i %ScriptPath%\" + "$Inst_Help_HU_32$" + " /quiet /norestart::" Set $InstallCommandList$ = $InstallCommandList$ + "MsiExec.exe /i %ScriptPath%\" + "$Inst_Help_US_32$" + " /quiet /norestart::" endif if $Lang$ = "US English" Set $Inst_Cmd32$ = $Inst_Cmd32$ + 'gm_r_ex_Dictionary_Fr,gm_r_ex_Dictionary_De UI_LANGS=en_US,hu' Set $InstallCommandList$ = $InstallCommandList$ + "MsiExec.exe /i %ScriptPath%\" + "$Inst_Help_HU_32$" + " /quiet /norestart::" Set $InstallCommandList$ = $InstallCommandList$ + "MsiExec.exe /i %ScriptPath%\" + "$Inst_Help_US_32$" + " /quiet /norestart::" endif if ($INST_SystemType$ = "x86 System") Message "Installing " + $ProductId$ + " on 32 Bit..." comment "Start setup program" Winbatch_install_32 Sub "%ScriptPath%\check_msi-exitcode.ins" endif if ($INST_SystemType$ = "64 Bit System") Message "Installing " + $ProductId$ + " on 64 Bit..." comment "Start setup program" Winbatch_install_64 Sub "%ScriptPath%\check_msi-exitcode.ins" endif if not ($InstallCommandList$ = "") set $result1$ = splitString($InstallCommandList$,"::") for $InstallCommand$ in $result1$ do Winbatch_Install sub "%ScriptPath%\check_msi-exitcode.ins" endif if $Extension$ = "Yes" Winbatch_Install_extension_hunart sub "%ScriptPath%\check_msi-exitcode.ins" Winbatch_Install_extension_numtext sub "%ScriptPath%\check_msi-exitcode.ins" Winbatch_Install_extension_templpack sub "%ScriptPath%\check_msi-exitcode.ins" Winbatch_Install_extension_templpack2 sub "%ScriptPath%\check_msi-exitcode.ins" endif endif [Winbatch_install_32] msiexec /i %ScriptPath%\$Inst_Prg32$ $Inst_Cmd32$ [Winbatch_install_64] msiexec /i %ScriptPath%\$Inst_Prg64$ $Inst_Cmd32$ [Winbatch_Install] $InstallCommand$ [Winbatch_Install_extension_hunart] "$InstallDir32$\program\unopkg.com" add --force --shared --verbose --suppress-license %ScriptPath%\hunart-0.3.oxt [Winbatch_Install_extension_numtext] "$InstallDir32$\program\unopkg.com" add --force --shared --verbose --suppress-license %ScriptPath%\numbertext-0.9.4.oxt [Winbatch_Install_extension_templpack] "$InstallDir32$\program\unopkg.com" add --force --shared --verbose --suppress-license %ScriptPath%\Sun_ODF_Template_Pack_en-US.oxt [Winbatch_Install_extension_templpack2] "$InstallDir32$\program\unopkg.com" add --force --shared --verbose --suppress-license %ScriptPath%\Sun_ODF_Template_Pack2_en-US.oxt ==== uninstall.ins ==== [Initial] LogLevel=9 ; Log Errors in Logfile but don't abort: ExitOnError=false ; Show syntax errors in the script: ScriptErrorMessages=on ; Dont trace step by step through the script: TraceMode=off ; let started programs run in front of the winst window StayOnTop=false [Actions] requiredWinstVersion >= "4.10.8.6" DefVar $LogDir$ DefVar $ExitCode$ DefVar $ProductId$ DefVar $InstallDir32$ DefVar $InstallDir64$ DefVar $LicenseRequired$ DefVar $LicensePool$ DefVar $INST_SystemType$ DefVar $INST_architecture$ DefVar $DisplayName$ Set $INST_SystemType$ = GetSystemType Set $LogDir$ = "%SystemDrive%\tmp" ; ---------------------------------------------------------------- ; - Please edit the following values - ; ---------------------------------------------------------------- Set $ProductId$ = "LibreOffce" Set $InstallDir32$ = "%ProgramFiles32Dir%\LibreOffice 4.0\" Set $LicenseRequired$ = "false" Set $LicensePool$ = "p_" + $ProductId$ ; ---------------------------------------------------------------- comment "Show product picture" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ Message "Uninstalling " + $ProductId$ + " ..." if FileExists("%ScriptPath%\delsub.ins") comment "Start uninstall sub section" Sub "%ScriptPath%\delsub.ins" endif if $LicenseRequired$ = "true" comment "Licensing required, free license used" Sub_free_license endif [Sub_free_license] comment "License management is enabled and will be used" comment "Trying to free license used for the product" DefVar $result$ Set $result$ = FreeLicense($LicensePool$) ; If there is an assignment of a license pool to the product, it is possible to use ; Set $result$ = FreeLicense("", $ProductId$) ; ; If there is an assignment of a license pool to a windows software id, it is possible to use ; DefVar $WindowsSoftwareId$ ; $WindowsSoftwareId$ = "..." ; set $result$ = FreeLicense("", "", $WindowsSoftwareId$) ==== delsub.ins ==== DefStringList $result$ DefStringList $result1$ DefVar $INST_arch$ Set $INST_arch$ = "Both" DefVar $INST2_SystemType$ Set $INST2_SystemType$ = GetSystemType DefVar $appKey$ DefVar $UninstallCommandList$ DefVar $UninstallCommandList2$ DefVar $appString$ DefVar $appKeyString$ DefVar $testName$ DefVar $exeString$ Set $appKeyString$ = "DisplayName" Set $appString$ = "LibreOffice" if ($INST2_SystemType$ = "x86 System" OR $INST_arch$ = "Both") Message "Uninstalling " + $appString$ + " 32 Bit..." comment "Start setup program" Set $result$ = getRegistryKeyList32("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall") for $app$ in $result$ do Sub_searchApp32 endif if ($INST2_SystemType$ = "64 Bit System" OR $INST_arch$ = "Both") Message "Uninstalling " + $appString$ + " 64 Bit..." comment "Start setup program" Set $result$ = getRegistryKeyList64("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall") for $app$ in $result$ do Sub_searchApp64 endif if not ($UninstallCommandList$ = "") set $result1$ = splitString($UninstallCommandList$,"::") for $UninstallCommand$ in $result1$ do Winbatch_Uninstall sub "%ScriptPath%\check_msi-exitcode.ins" endif if fileExists($InstallDir32$) Files_delete_installdir endif [Sub_searchApp32] set $appKey$ = "[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + "$app$" + "] " + $appKeyString$ Set $testName$ = GetRegistryStringValue32($appKey$) if contains($testName$,$appString$) set $appKey$ = "[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + "$app$" + "] UninstallString" Set $testName$ = GetRegistryStringValue32($appKey$) if contains(lower($testName$),lower("MsiExec.exe")) set $UninstallCommandList$ = $UninstallCommandList$ + "MsiExec.exe /x " + "$app$" + " /qb-! REBOOT=ReallySuppress::" else Set $testName$ = unquote($testName$,'"') Set $testName$ = unquote($testName$,"'") Set $exeString$ = takeString(0, splitString ($testName$, "exe")) set $UninstallCommandList$ = $UninstallCommandList$ + $exeString$ + "exe /S::" endif endif [Sub_searchApp64] set $appKey$ = "[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + "$app$" + "] " + $appKeyString$ Set $testName$ = GetRegistryStringValue64($appKey$) if contains($testName$,$appString$) set $appKey$ = "[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + "$app$" + "] UninstallString" Set $testName$ = GetRegistryStringValue64($appKey$) if contains(lower($testName$),lower("MsiExec.exe")) set $UninstallCommandList$ = $UninstallCommandList$ + "MsiExec.exe /x " + "$app$" + " /qb-! REBOOT=ReallySuppress::" else Set $testName$ = unquote($testName$,'"') Set $testName$ = unquote($testName$,"'") Set $exeString$ = takeString(0, splitString ($testName$, "exe")) set $UninstallCommandList$ = $UninstallCommandList$ + '"' + $exeString$ + 'exe /S"::' endif endif [Winbatch_Uninstall] $UninstallCommand$ [Files_delete_installdir] del -f -s "$InstallDir32$" ==== control ==== [Package] version: 2 depends: incremental: False [Product] type: localboot id: libreoffice name: LibreOffice 4 description: LibreOffice, the open source soluton to office programs advice: version: 4.0.0 priority: 0 licenseRequired: False productClasses: setupScript: setup.ins uninstallScript: uninstall.ins updateScript: alwaysScript: onceScript: customScript: userLoginScript: [ProductDependency] action: setup requiredProduct: jdk requiredAction: setup requirementType: before [ProductProperty] type: unicode name: lang multivalue: False editable: False description: Which lang do you want to install values: ["French", "German", "Hungarian", "US English"] default: ["US English"] [ProductProperty] type: unicode name: extensions multivalue: False editable: False description: Install extensions values: ["No", "Yes"] default: ["Yes"]