====== Citrix Online Plugin ====== Adaptation of the opsi-template scripts for the Citrix Online Plugin. \\ The online plugin is not being updated any more, so we have to use Citrix Receiver.\\ Downloadable from the Citrix Receiver site: http://receiver.citrix.com/\\ As Citrix Receiver is loaded with lots of unneeded stuff, we are going to install only one component.\\ Extract the downloaded file with Total Commander, or an other program that can handle compressed .exe files.\\ We need the ICAWebWrapper.msi file, this is the .msi of the Online Plugin.\\ An useful tool is InstEd!: http://www.instedit.com/download.html\\ With this we make an msi transform to change the title that is shown in the add/remove programs interface in windows. "Online Plugin" doesn't say very much, does it?\\ In InstEd! we choose Tables -> Property, change ProductName to Citrix Online Plug-in 14.1.0.0 (or the version that you are installing).\\ More information about MSI transforms: http://www.instedit.com/workingwithtransforms.html\\ This is a different version than the one already on here, this includes adding a website to the trusted zone in Internet Settings, and creating a few shortcuts. Only tested this as script, not as complete package. The mozilla-firefox package is not finished yet.\\ Shortcuts are made for the https://subdomain.your-mom.com site, which of course doesn't really exist.\\ So we have :\\ %scriptpath%\files\Citrix_ICAWebWrapper_14.1.0.0.mst\\ %scriptpath%\files\Citrix_ICAWebWrapper_14.1.0.0.msi\\ ==== control file ==== [Package] version: 1 depends: incremental: False [Product] type: localboot id: citrix-ica-plugin name: Citrix ICA client web plugin description: The Citrix ICA client provides connectivity to remote applications. advice: Install this application if you need to connect to the your-cunt environment. version: 14.1.0.0 priority: 0 licenseRequired: False productClasses: setupScript: setup3264.ins uninstallScript: uninstall3264.ins updateScript: alwaysScript: onceScript: customScript: userLoginScript: [ProductDependency] action: setup requiredProduct: mozilla-firefox requiredStatus: installed [Changelog] citrix-ica-plugin (14.1.0.0-1) testing; urgency=low * Initial package -- ICT Wed, 07 May 2014 21:13:00 +0000 ==== setup3264.ins ==== ; Copyright (c) uib gmbh (www.uib.de) ; This sourcecode is owned by uib ; and published under the Terms of the General Public License. ; credits: http://www.opsi.org/en/credits/ ; ; License Management removed [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 $ExitCode$ DefVar $INST_SystemType$ ;DefVar $INST_architecture$ DefVar $INST_MsVersion$ set $INST_MsVersion$ = GetMsVersionInfo 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$ = "citrix-ica-plugin" Set $MinimumSpace$ = "250 MB" ; the path were we find the product after the installation Set $InstallDir32$ = "%ProgramFiles32Dir%\Citrix\ICA Client" ;Set $InstallDir64$ = "%ProgramFiles64Dir%\" ; ---------------------------------------------------------------- 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 endif if $INST_MsVersion$ < "5.1" LogError "Windows XP or newer is required for " + $ProductId$ isFatalError endif comment "Show product picture" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ if FileExists("%ScriptPath%\delsub3264.ins") comment "Start uninstall sub section" Sub "%ScriptPath%\delsub3264.ins" endif comment "installing" if ($INST_SystemType$ = "x86 System") ;and ($INST_architecture$ = "system specific")) or ($INST_architecture$ = "both") or ($INST_architecture$ = "32 only") Message "Installing " + $ProductId$ + "..." comment "Start setup program" killtask "redirector.exe" killtask "concentr.exe" killtask "wfcrun32.exe" Winbatch_install_32 Sub_check_exitcode comment "Copy files" Files_install_32 /32Bit comment "Patch Registry" Registry_install /32Bit Registry_install_AllProfiles /AllNTUserDats comment "Create shortcuts" LinkFolder_install endif if ($INST_SystemType$ = "64 Bit System") ;and (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only")) Message "Installing " + $ProductId$ + "..." comment "Start setup program" killtask "redirector.exe" killtask "concentr.exe" killtask "wfcrun32.exe" Winbatch_install_32 Sub_check_exitcode comment "Copy files" Files_install_32 /64Bit comment "Patch Registry" Registry_install /64Bit Registry_install /32Bit Registry_install_AllProfiles /AllNTUserDats comment "Create shortcuts" LinkFolder_install endif [Winbatch_install_32] "%SystemRoot%\system32\msiexec.exe" /qb! /package "%ScriptPath%\files\Citrix_ICAWebWrapper_14.1.0.0.msi" TRANSFORMS="%ScriptPath%\files\Citrix_ICAWebWrapper_14.1.0.0.mst" ADDLOCAL=ALL [Files_install_32] delete -f "$InstallDir32$\IEInterceptor.dll" delete -f "$InstallDir32$\npURLInterceptorPlugin.dll" delete -sf "$InstallDir32$\Firefox_Extension\" delete -sf "$InstallDir32$\Chrome_Extension\" [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 ================================================================ ; "%ScriptPath%\Setup.exe" /S ; ; === MSI package ======================================================================================= ; You may use the parameter PIDKEY=$Licensekey$ ; msiexec /i "%ScriptPath%\some.msi" /l* "$LogDir$\$ProductId$.install_log.txt" /qb! ALLUSERS=2 REBOOT=ReallySuppress ; ; === InstallShield + MSI===================================================================================== ; Attention: The path to the log file should not contain any whitespaces ; "%ScriptPath%\setup.exe" /s /v" /l* $LogDir$\$ProductId$.install_log.txt /qb! ALLUSERS=2 REBOOT=ReallySuppress" ; "%ScriptPath%\setup.exe" /s /v" /qb! ALLUSERS=2 REBOOT=ReallySuppress" ; ; === InstallShield ===================================================================================== ; Create setup.iss answer file by running: setup.exe /r /f1"c:\setup.iss" ; "%ScriptPath%\setup.exe" /s /sms /f1"%ScriptPath%\setup.iss" /f2"$LogDir$\$ProductId$.install_log.txt" ; ; === Inno Setup ======================================================================================== ; http://unattended.sourceforge.net/InnoSetup_Switches_ExitCodes.html ; You may create setup answer file by: setup.exe /SAVEINF="filename" ; You may use an answer file by the parameter /LOADINF="filename" ; "%ScriptPath%\setup.exe" /sp- /silent /norestart /nocancel /SUPPRESSMSGBOXES [Files_install_64] ; Example of recursively copying some files into the installation directory: ; ; copy -s "%ScriptPath%\files\*.*" "$InstallDir64$" [Registry_install] openkey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix] set "IcaEnableKeepAlive" = REG_DWORD:00000001 set "IcaKeepAliveInternal" = REG_DWORD:00000060 openkey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] set "TcpMaxDataRetransmissions" = REG_DWORD:00000010 openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] deletevar "Redirector" [Registry_install_AllProfiles] ; Add gisportal2.eneco.nl to Trusted Sites in IE openkey [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\your-mom.com\subdomain] set "https" = REG_DWORD:0002 ; Remove stored start menu order deletekey [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu] [LinkFolder_install] set_basefolder common_programs set_subfolder Citrix set_link name: YOURCUNT (Mozilla Firefox) target: "%ProgramFiles32Dir%\Mozilla Firefox\firefox.exe" parameters: https://subdomain.your-mom.com working_dir: "%ProgramFiles32Dir%\Mozilla Firefox" icon_file: "$InstallDir32$\wfica32.exe" icon_index: 0 end_link set_link name: YOURCUNT (Internet Explorer) target: "%ProgramFiles32Dir%\Internet Explorer\iexplore.exe" parameters: https://subdomain.your-mom.com working_dir: "%ProgramFiles32Dir%\Internet Explorer\" icon_file: "$InstallDir32$\wfica32.exe" icon_index: 0 end_link set_basefolder common_desktopdirectory set_subfolder "" set_link name: YOURCUNT target: "%ProgramFiles32Dir%\Mozilla Firefox\firefox.exe" parameters: https://subdomain.your-mom.com working_dir: "%ProgramFiles32Dir%\Mozilla Firefox" icon_file: "$InstallDir32$\wfica32.exe" icon_index: 0 end_link [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 ==== uninstall3264.ins ==== ; Copyright (c) uib gmbh (www.uib.de) ; This sourcecode is owned by uib gmbh ; and published under the Terms of the General Public License. ; credits: http://www.opsi.org/en/credits/ ; ; License Management removed [Actions] requiredWinstVersion >= "4.10.8.6" ;DefVar $MsiId32$ ;DefVar $UninstallProgram32$ ;DefVar $MsiId64$ ;DefVar $UninstallProgram64$ DefVar $LogDir$ DefVar $ExitCode$ DefVar $ProductId$ DefVar $InstallDir32$ ;DefVar $InstallDir64$ DefVar $INST_SystemType$ ;DefVar $INST_architecture$ Set $INST_SystemType$ = GetSystemType ;set $INST_architecture$ = GetProductProperty("install_architecture","system specific") Set $LogDir$ = "%SystemDrive%\tmp" ; ---------------------------------------------------------------- ; - Please edit the following values - ; ---------------------------------------------------------------- Set $ProductId$ = "citrix-ica-plugin" Set $InstallDir32$ = "%ProgramFiles32Dir%\Citrix\ICA Client" ;Set $InstallDir64$ = "%ProgramFiles64Dir%\" ; ---------------------------------------------------------------- comment "Show product picture" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ Message "Uninstalling " + $ProductId$ + " ..." if FileExists("%ScriptPath%\delsub3264.ins") comment "Start uninstall sub section" Sub "%ScriptPath%\delsub3264.ins" endif ==== delsub3264.ins ==== ; Copyright (c) uib gmbh (www.uib.de) ; This sourcecode is owned by uib gmbh ; and published under the Terms of the General Public License. ; credits: http://www.opsi.org/en/credits/ ; ; License Management removed DefStringList $result$ DefStringList $result1$ DefVar $appKey$ DefVar $UninstallCommandList$ DefVar $appString$ DefVar $appKeyString$ DefVar $testName$ ;DefVar $exeString$ Set $appKeyString$ = "DisplayName" Set $appString$ = "Citrix Online" ;Set $MsiId32$ = '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}' ;Set $UninstallProgram32$ = $InstallDir32$ + "\uninstall.exe" ;Set $MsiId64$ = '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}' ;Set $UninstallProgram64$ = $InstallDir64$ + "\uninstall.exe" if ($INST_SystemType$ = "x86 System") ;and ($INST_architecture$ = "system specific")) or ($INST_architecture$ = "both") or ($INST_architecture$ = "32 only") Message "Uninstalling " + $ProductId$ + "..." Set $result$ = getRegistryKeyList32("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall") for $app$ in $result$ do Sub_searchApp32 if not ($UninstallCommandList$ = "") set $result1$ = splitString($UninstallCommandList$,"::") killtask "redirector.exe" killtask "concentr.exe" killtask "wfcrun32.exe" for $UninstallCommand$ in $result1$ do Winbatch_uninstall_32 /32Bit sub_check_exitcode endif ; if FileExists($UninstallProgram32$) ; comment "Uninstall program found, starting uninstall" ; Winbatch_uninstall_32 ; sub_check_exitcode ; endif ; if not (GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiId32$ + "] DisplayName") = "") ; comment "MSI id " + $MsiId32$ + " found in registry, starting msiexec to uninstall" ; Winbatch_uninstall_msi_32 ; sub_check_exitcode ; endif comment "Delete files" Files_uninstall_32 /32Bit Files_uninstall_AllProfiles /AllNtUserProfiles comment "Cleanup registry" Registry_uninstall /32Bit Registry_uninstall_AllProfiles /AllNTUserDats endif if ($INST_SystemType$ = "64 Bit System") ;and (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only")) Message "Uninstalling " + $ProductId$ + "..." ; Set $result$ = getRegistryKeyList64("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall") ; for $app$ in $result$ do Sub_searchApp64 ; if not ($UninstallCommandList$ = "") ; set $result1$ = splitString($UninstallCommandList$,"::") ; for $UninstallCommand$ in $result1$ do Winbatch_uninstall_64 /64Bit ; sub_check_exitcode ; endif Set $result$ = getRegistryKeyList32("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall") for $app$ in $result$ do Sub_searchApp32 if not ($UninstallCommandList$ = "") set $result1$ = splitString($UninstallCommandList$,"::") killtask "redirector.exe" killtask "concentr.exe" killtask "wfcrun32.exe" for $UninstallCommand$ in $result1$ do Winbatch_uninstall_32 /32Bit sub_check_exitcode endif ; if FileExists($UninstallProgram64$) ; comment "Uninstall program found, starting uninstall" ; Winbatch_uninstall_64 ; sub_check_exitcode ; endif ; if not (GetRegistryStringValue64("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiId64$ + "] DisplayName") = "") ; comment "MSI id " + $MsiId64$ + " found in registry, starting msiexec to uninstall" ; Winbatch_uninstall_msi_64 ; sub_check_exitcode ; endif comment "Delete files" Files_uninstall_32 /64Bit Files_uninstall_AllProfiles /AllNtUserProfiles comment "Cleanup registry" Registry_uninstall /64Bit Registry_uninstall_AllProfiles /AllNTUserDats endif comment "Delete program shortcuts" LinkFolder_uninstall [Winbatch_uninstall_32] $UninstallCommand$ [Files_uninstall_32] ;delete -sf "$InstallDir32$\" delete -sf "%ProgramFiles32Dir%\Citrix\" [Winbatch_uninstall_64] $UninstallCommand$ [Files_uninstall_64] ; Example for recursively deleting the installation directory (don't forget the trailing backslash): ; ; delete -sf "$InstallDir64$\" [Files_uninstall_AllProfiles] delete -sf "%UserProfileDir%\Application Data\ICAClient\" [Registry_uninstall] deletekey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix] [Registry_uninstall_AllProfiles] [LinkFolder_uninstall] set_basefolder common_programs delete_subfolder Citrix set_basefolder common_desktopdirectory set_subfolder "" delete_element Stedin - E-GIS [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 [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