This is an old revision of the document!
this script deployed the .print Client engine for Citrix. You must defined a product dependency to the Citrix Plugin for hosted solutions
Dieses Script verteilt die .print Client Komponente von ThinPrint. In der Produktdefinition müssen Sie eine Produktabhängigkeit zu den Ctrix Plugin für gehostete Anwendungen erstellen
tested under Windows 7/32 Bit / Getestet unter Windows 7 32 Bit
the 64 Bit section is under construction / Die 64 Bit Sektion ist noch in Arbeit
questions to / Fragen an Frisoft
loading the licensed components / Herunterlader der zu lizensierenden Konponenten http://www.thinprint.de/Download/ClientsTools.aspx
the product picture are downloaded from Internet / Das Produktbild ist aus dem Internet herunterzuladen
the scripts are unversal scripts, they are customized for many sloutions / Die Scripts sind Unversal-Scripts, die schon für einige Lösungen abgepasst wurden
the scripts are based of a Solution from forum member Thomas_H / Die Scripte basieren auf einer Lösung vom Forum - Mitglied Thomas_H
my directory strcture / Meine Verzeichnisstruktur
files\TPTCP_x64_deu\ThinPrint\TPTCP_x64_deu.msi files\TPTCP_x86_deu\ThinPrint\TPTCP_x86_deu.msi delsub.ins setup.ins uninstall.ins ThinPrint.jpg
[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 $MsiId32$ DefVar $UninstallProgram32$ DefVar $MsiId64$ DefVar $UninstallProgram64$ DefVar $LogDir$ DefVar $ProductId$ DefVar $MinimumSpace$ DefVar $InstallDir32$ DefVar $InstallDir64$ Defvar $InstallTmpDir$ DefVar $ExitCode$ DefVar $LicenseRequired$ DefVar $LicenseKey$ DefVar $LicensePool$ DefVar $INST_SystemType$ DefVar $INST_architecture$ defvar $INSTVersion$ DefVar $Version$ DefVar $Inst_Cmd32$ DefVar $Inst_Cmd64$ DefVar $Inst_Prg$ DefVar $Uninst_Cmd$ DefVar $Uninst_Prg$ DefVar $InstDest$ Set $INST_SystemType$ = GetSystemType set $INST_architecture$ = GetProductProperty("install_architecture","system specific") Set $LogDir$ = "%SystemDrive%\tmp" ; ---------------------------------------------------------------- ; - 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$ = "ThinPrint" Set $Version$ = "2011" Set $MinimumSpace$ = "50 MB" ; the path were we find the product after the installation Set $InstallDir32$ = "%ProgramFiles32Dir%\ThinPrint Client" Set $InstallDir64$ = "%ProgramFiles64Dir%\ThinPrint Client" Set $LicenseRequired$ = "false" Set $LicensePool$ = "p_" + $ProductId$ Set $Inst_Prg$ = "msiexec.exe" Set $Inst_Cmd32$ = '/qb /i "%ScriptPath%\files\TPTCP_x86_deu\ThinPrint\TPTCP_x86_deu.msi" CITRIXCLIENT-DIR="%ProgramFiles32Dir%\Citrix\ICA Client" /quiet' Set $Inst_Cmd64$ = '/qb /i "%ScriptPath%\files\TPTCP_x64_deu\ThinPrint\TPTCP_x64_deu.msi" CITRIXCLIENT-DIR="%ProgramFiles64Dir%\Citrix\ICA Client" /quiet' Set $Uninst_Cmd$ = "" Set $Uninst_Prg$ = "" ; ---------------------------------------------------------------- ;c:\Windows\System32\msiexec /qb /i "c:\install\ThinPrintClient Windows 8.6.msi" ADDLOCAL="ICA" CITRIXCLIENT-DIR="C:\Program Files\Citrix\ICA Client" comment "Show product picture" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".jpg" $ProductId$ 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 ; 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 comment "Installiere ThinPrint Client 8.0 ICA..." if (($INST_SystemType$ = "x86 System") and ($INST_architecture$ = "system specific")) or ($INST_architecture$ = "both") or ($INST_architecture$ = "32 only") Message "Installiere " + $ProductId$ + ". Das kann etwas laenger dauern, bitte Geduld..." comment "Start setup program" if (FileExists("%ProgramFilesSysnativeDir%\Citrix\ICA Client\pn.exe")) comment "installing the plugin" Winbatch_install_32 endif ; comment "patch the Userprofil" ; Set $InstDest$ = "%CurrentProfileDir%" ; Files_Patch_UserProfil ; if not(fileExists("%DefaultUserProfileDir%\AppData\Roaming\ICAClient\wfcwin32.log")) ; comment "patch the default User5Profile" ; Set $InstDest$ = "%DefaultUserProfileDir%" ; Files_Patch_UserProfil ; endif comment "ceck the return arguments" Sub_check_exitcode endif if ($INST_SystemType$ = "64 Bit System") and (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only")) Message "Installiere " + $ProductId$ + ". Das kann etwas laenger dauern, bitte Geduld..." comment "Start setup program" if not (FileExists("%ProgramFilesSysnativeDir%\Citrix\ICA Client\pn.exe")) comment "installing the plugin" Winbatch_install_64 endif ; comment "patch the Userprofil" ; Set $InstDest$ = "%CurrentProfileDir%" ; Files_Patch_UserProfil ; if not(fileExists("%DefaultUserProfileDir%\AppData\Roaming\ICAClient\wfcwin32.log")) ; comment "patch the default User5Profile" ; Set $InstDest$ = "%DefaultUserProfileDir%" ; Files_Patch_UserProfil ; endif comment "ceck the return arguments" Sub_check_exitcode endif endif [Winbatch_install_32] ; Choose one of the following examples as basis for your installation ; You can use $LicenseKey$ var to pass a license key to the installer ; ; === Nullsoft Scriptable Install System ================================================================ "$Inst_Prg$" $Inst_Cmd32$ [Winbatch_install_64] ; Choose one of the following examples as basis for your installation ; You can use $LicenseKey$ var to pass a license key to the installer ; ; === Nullsoft Scriptable Install System ================================================================ "$Inst_Prg$" $Inst_Cmd64$ [Files_delete_32] ; Example of recursively copying some files into the installation directory: ; ;copy "%ScriptPath%\config.xml" "$InstallTmpDir$\$INSTVersion$.WW" [Files_Install_Copy] ; copy the installationCD to the local HD ;copy -s "%ScriptPath%\files\*.*" "$InstallTmpDir$" ;copy "%ScriptPath%\config.xml" "$InstallTmpDir$\$INSTVersion$.WW" [Files_Patch_UserProfil] ;copy -s "%ScriptPath%\files\ICAClient_User\*.*" "$InstDest$\AppData\Roaming\ICAClient" ;copy -s "%ScriptPath%\files\Cache_local\*.*" "$InstDest$\AppData\local\ICAClient\Cache" [Sub_get_licensekey] comment "License management is enabled and will be used" comment "Trying to get a license key" Set $LicenseKey$ = demandLicenseKey ($LicensePool$) ; If there is an assignment of exactly one licensepool ; to the product the following call is possible: ; Set $LicenseKey$ = demandLicenseKey ("", $ProductId$) ; ; If there is an assignment of a license pool ; to a windows software id, it is possible to use: ; DefVar $WindowsSoftwareId$ ; $WindowsSoftwareId$ = "..." ; Set $LicenseKey$ = demandLicenseKey ("", "", $WindowsSoftwareId$) DefVar $ServiceErrorClass$ set $ServiceErrorClass$ = getLastServiceErrorClass comment "Error class: " + $ServiceErrorClass$ if $ServiceErrorClass$ = "None" comment "Everything fine, we got the license key '" + $LicenseKey$ + "'" else if $ServiceErrorClass$ = "LicenseConfigurationError" LogError "Fatal: license configuration must be corrected" LogError getLastServiceErrorMessage isFatalError else if $ServiceErrorClass$ = "LicenseMissingError" LogError "Fatal: required license is not supplied" isFatalError endif endif endif [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" comment "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" comment "complete the install. This message is indicative of a success." else logError "Fatal: Setup program gives an unknown exitcode unequal zero: " logError $ExitCode$ isFatalError endif endif endif endif
[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 $MsiId32$ DefVar $UninstallProgram32$ DefVar $MsiId64$ DefVar $UninstallProgram64$ DefVar $Version$ DefVar $MinimumSpace$ DefVar $LogDir$ DefVar $ExitCode$ DefVar $ProductId$ DefVar $InstallDir32$ DefVar $InstallDir64$ Defvar $InstallTmpDir$ DefVar $LicenseRequired$ DefVar $LicensePool$ DefVar $INST_SystemType$ DefVar $INST_architecture$ DefVar $Uninst_Cmd$ DefVar $Uninst_Prg$ DefVar $INSTVersion$ Set $INST_SystemType$ = GetSystemType set $INST_architecture$ = GetProductProperty("install_architecture","system specific") Set $LogDir$ = "%SystemDrive%\tmp" ; ---------------------------------------------------------------- ; - Please edit the following values - ; ---------------------------------------------------------------- Set $ProductId$ = "ThinPrint" Set $Version$ = "2011" Set $MinimumSpace$ = "50 MB" Set $InstallDir32$ = "%ProgramFiles32Dir%\ThinPrint Client" Set $InstallDir64$ = "%ProgramFiles64Dir%\ThinPrint Client" Set $LicenseRequired$ = "false" Set $LicensePool$ = "p_" + $ProductId$ Set $Uninst_Prg$ = "MsiExec.exe" Set $Uninst_Cmd$ = " /X{4A7DCE09-9A5A-4A75-ACA5-98D13D400816} /quiet" ; the correct uninstall command you are looked in the registry under the Hive ; ; ---------------------------------------------------------------- comment "Show product picture" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".jpg" $ProductId$ Message "Deinstalliere " + $ProductId$ + ". Bitte etwas Geduld..." if (FileExists("%ProgramFilesSysnativeDir%\ThinPrint Client\Thnclnt32deu.dll")) comment "Start uninstall sub section" Sub "%ScriptPath%\delsub.ins" comment "delete the default and the user profile data" ; Files_Delete_UserProfil else comment "modul not installed" isFatalError endif if $LicenseRequired$ = "true" comment "Licensing required, free license used" Sub_free_license endif ExitWindows /reboot [Files_Delete_UserProfil] delete -s "%CurrentProfileDir%\AppData\Roaming\ICAClient" delete -s "%CurrentProfileDir%\AppData\local\ICAClient\Cache" delete -s "%DefaultUserProfileDir%\AppData\Roaming\ICAClient" delete -s "%DefaultUserProfileDir%\AppData\local\ICAClient\Cache" [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$)
if (($INST_SystemType$ = "x86 System") and ($INST_architecture$ = "system specific")) or ($INST_architecture$ = "both") or ($INST_architecture$ = "32 only") Message "Uninstalling " + $ProductId$ + " 32 Bit..." comment "Uninstall program found, starting uninstall" Winbatch_uninstall_32 sub_check_exitcode endif if ($INST_SystemType$ = "64 Bit System") and (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only")) Message $ProductId$ + " ist nur fuer 32 Bit..." comment "Fatal: Nur fuer 32 Bit OS!" isFatalError endif [Winbatch_uninstall_32] $Uninst_Prg$ $Uninst_Cmd$ [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 if ($ExitCode$ = "30066") comment "looks good: setup program means that the install-Source are corrupted" else logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$ isFatalError endif endif endif endif endif