====== 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