== TightVNC with the new MSI installer == Since TightVNC 2.5.2 the developer changed to an MSI Installation. If you want you can install only the Viwer or only the Server. I created a Winst script with some Productproperties to modify the installer. I think it's beta, so some Properties may not work correctly. For example the product property to install the Server in non Service Mode. But you can set the Server Password and you can install only the viewer or only the Server. For more Information about the new MSI Installer please read this PDF: [[http://www.tightvnc.com/doc/win/TightVNC-installer-2.5.2.pdf]] ====== TightVNC Ver. 2.5.2 ====== Tested with opsi 4.11.2.9 \\ requiredWinstVersion >= Not Tested Files can be downloaded at http://www.tightvnc.com By --- //[[tobias.friede@wki.fraunhofer.de|tobias]] 2012/10/12 08:51// Tree:\\ ├ CLIENT_DATA │ ├ delsub3264.ins │ ├ setup3264.ins │ ├ tightVNC.png │ ├ uninstall3264.ins │ ├ vncX86.msi │ └ vncX64.msi ├ OPSI │ └ control ==== Steps ==== - Download TightVNC (x64, x86) ==== setup.ins ==== [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 $LicenseRequired$ DefVar $LicenseKey$ DefVar $LicensePool$ 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 - ; ---------------------------------------------------------------- ;$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$ = "TightVNC" Set $MinimumSpace$ = "100 MB" ; the path were we find the product after the installation Set $InstallDir32$ = "%ProgramFiles32Dir%\" Set $InstallDir64$ = "%ProgramFiles64Dir%\" Set $LicenseRequired$ = "false" Set $LicensePool$ = "p_" + $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 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$ + " 32 Bit..." sub_generate_setupcommand comment "Start setup program" Winbatch_install_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 "Installing " + $ProductId$ + " 64 Bit..." sub_generate_setupcommand comment "Start setup program" Winbatch_install_64 Sub_check_exitcode endif endif [Winbatch_install_32] ; === MSI package ======================================================================================= msiexec /i %scriptpath%\vncX86.msi /passive /norestart $setupMSI$ [Winbatch_install_64] ; === MSI package ======================================================================================= msiexec /i %scriptpath%\vncX64.msi /passive /norestart $setupMSI$ [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 ;------------------------------------------------------------------------------- ; Generating the Setup command ;------------------------------------------------------------------------------- [sub_generate_setupcommand] ; Define String and Variables DefStringList $parameter$ ;Stringlist for MSI Parameter DefVar $usepassword$ ;UsePassword Yes or No DefVar $password$ ;The VNC Connection Password DefVar $setupMSI$ ;The full MSI Setup command DefVar $ownParameter$ ;Variable for define own commands via productproperty ; Default Options DefVar $Mode$ DefVar $ADDLOCAL$ DefVar $VIEWER_ASSOCIATE_VNC_EXTENSION$ DefVar $SERVER_REGISTER_AS_SERVICE$ DefVar $SERVER_ADD_FIREWALL_EXCEPTION$ DefVar $VIEWER_ADD_FIREWALL_EXCEPTION$ DefVar $SERVER_ALLOW_SAS$ set $Mode$ = GetproductProperty("mode","Server") set $parameter$= addtolist($parameter$,'ADDLOCAL='+$Mode$ ) ;Viewer Parameter if ($Mode$ = "viewer") sub_set_ViewerOptions else if ($Mode$ = "server") sub_set_ServerOptions else if ($Mode$ = "Viewer,Server") sub_set_ServerOptions sub_set_ViewerOptions else isFatalError comment "You must set the correct ProductProperty" endif endif endif ;create setup command for %s% in $parameter$ do set $setupMSI$ = $setupMSI$+" %s%" comment $setupMSI$ [sub_set_ViewerOptions] set $VIEWER_ASSOCIATE_VNC_EXTENSION$ = GetproductProperty("VIEWER_ASSOCIATE_VNC_EXTENSION","1") set $VIEWER_ADD_FIREWALL_EXCEPTION$ = GetproductProperty("VIEWER_ADD_FIREWALL_EXCEPTION","1") set $parameter$= addtolist($parameter$,"VIEWER_ASSOCIATE_VNC_EXTENSION="+ $VIEWER_ASSOCIATE_VNC_EXTENSION$ ) set $parameter$= addtolist($parameter$,"VIEWER_ADD_FIREWALL_EXCEPTION="+ $VIEWER_ADD_FIREWALL_EXCEPTION$ ) [sub_set_ServerOptions] set $SERVER_REGISTER_AS_SERVICE$ = GetproductProperty("SERVER_REGISTER_AS_SERVICE", "0") set $SERVER_ADD_FIREWALL_EXCEPTION$ = GetproductProperty("SERVER_ADD_FIREWALL_EXCEPTION", "1") set $SERVER_ALLOW_SAS$ = GetproductProperty("SERVER_ALLOW_SAS", "1") set $password$ = "VALUE_OF_PASSWORD="+GetProductProperty('passwort', 'passwort') set $parameter$= addtolist($parameter$,"SERVER_REGISTER_AS_SERVICE="+ $SERVER_REGISTER_AS_SERVICE$ ) if ($SERVER_REGISTER_AS_SERVICE$ = "1") set $parameter$= addtolist($parameter$,"SERVER_ADD_FIREWALL_EXCEPTION="+ $SERVER_ADD_FIREWALL_EXCEPTION$ ) set $parameter$= addtolist($parameter$,"SERVER_ALLOW_SAS="+ $SERVER_ALLOW_SAS$) if ($usepassword$ = "yes") set $parameter$= addtolist($parameter$,"SET_USECONTROLAUTHENTICATION=1 ") set $parameter$= addtolist($parameter$,"VALUE_OF_USEVNCAUTHENTICATION=1 ") set $parameter$= addtolist($parameter$,"SET_PASSWORD=1 ") set $parameter$= addtolist($parameter$,$password$ ) else comment ="No Password set" endif else comment = "Server is not registered as service" endif ;------- End ------------------------------------------------------------------- ;------------------------------------------------------------------------------- ==== uninstall.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/credits/ [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 $LicenseRequired$ DefVar $LicensePool$ 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$ = "TightVNC" Set $InstallDir32$ = "%ProgramFiles32Dir%\TightVNC" Set $InstallDir64$ = "%ProgramFiles64Dir%\TightVNC" Set $LicenseRequired$ = "false" Set $LicensePool$ = "p_" + $ProductId$ ; ---------------------------------------------------------------- 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 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 ==== ; 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/credits/ Set $MsiId32$ = '{1ACD399C-7F26-43A6-9F16-3AB28F63FDC7}' Set $UninstallProgram32$ = $InstallDir32$ + "\uninstall.exe" Set $MsiId64$ = '{BC994A59-6E98-4203-8A35-819938DD5ED1}' 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$ + " 32 Bit..." 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 comment "Cleanup registry" Registry_uninstall /32Bit endif if ($INST_SystemType$ = "64 Bit System") and (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only")) Message "Uninstalling " + $ProductId$ + " 64 Bit..." 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_64 /64Bit comment "Cleanup registry" Registry_uninstall /64Bit endif comment "Delete program shortcuts" LinkFolder_uninstall [Winbatch_uninstall_32] ; Choose one of the following examples as basis for program uninstall ; ; === Nullsoft Scriptable Install System ================================================================ ; "$UninstallProgram32$" /S ; ; === Inno Setup ======================================================================================== ; "$UninstallProgram32$" /silent /norestart /SUPPRESSMSGBOXES [Winbatch_uninstall_msi_32] msiexec /x $MsiId32$ /qb! REBOOT=ReallySuppress [Files_uninstall_32] ; Example for recursively deleting the installation directory (don't forget the trailing backslash): ; ; delete -sf "$InstallDir32$\" [Winbatch_uninstall_64] ; Choose one of the following examples as basis for program uninstall ; ; === Nullsoft Scriptable Install System ================================================================ ; "$UninstallProgram64$" /S ; ; === Inno Setup ======================================================================================== ; "$UninstallProgram64$" /silent /norestart /SUPPRESSMSGBOXES [Winbatch_uninstall_msi_64] msiexec /x $MsiId64$ /qb! REBOOT=ReallySuppress [Files_uninstall_64] ; Example for recursively deleting the installation directory (don't forget the trailing backslash): ; ; delete -sf "$InstallDir64$\" [Registry_uninstall] ; Example of deleting a registry key: ; ; deletekey [HKEY_LOCAL_MACHINE\Software\$ProductId$] [LinkFolder_uninstall] ; Example of deleting a folder from AllUsers startmenu: ; ; set_basefolder common_programs ; delete_subfolder $ProductId$ ; ; Example of deleting a shortcut from AllUsers desktop: ; ; set_basefolder common_desktopdirectory ; set_subfolder "" ; delete_element $ProductId$ [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 [Package] version: 1 depends: incremental: False [Product] type: localboot id: tightvnc name: TightVNC description: VNC Viewer und Server advice: Kostenfrei version: 2.5.2 priority: 0 licenseRequired: False productClasses: setupScript: setup3264.ins uninstallScript: uninstall3264.ins updateScript: alwaysScript: onceScript: customScript: userLoginScript: [ProductProperty] type: unicode name: mode multivalue: False editable: False description: Server, Viewer or Server and Viewer values: ["Server", "Viewer", "Viewer,Server"] default: ["Viewer"] [ProductProperty] type: unicode name: viewer_associate_vnc_extension multivalue: False editable: False description: Viewer mit VNC extension verkuepfen values: ["0", "1"] default: ["1"] [ProductProperty] type: unicode name: viewer_add_firewall_exception multivalue: False editable: True description: viewer: Firewall Ausnahme definieren values: ["0", "1"] default: ["1"] [ProductProperty] type: unicode name: server_register_as_service multivalue: False editable: False description: Server: Wird als Dienst ausgefhrt values: ["0", "1"] default: ["0"] [ProductProperty] type: unicode name: server_add_firewall_exception multivalue: False editable: False description: Server: Firewall Ausnahme values: ["0", "1"] default: ["1"] [ProductProperty] type: unicode name: server_allow_sas multivalue: False editable: False values: ["0", "1"] default: ["1"] [ProductProperty] type: unicode name: usepassword multivalue: False editable: False description: Yes/No values: ["no", "yes"] default: ["yes"] [ProductProperty] type: unicode name: passwort multivalue: False editable: True description: Server Passwort values: ["passwort"] default: ["passwort"] [Changelog] tightvnc (2.5.2-1) testing; urgency=low * Initial package ====== Old Version with EXE installer ====== Tested with opsi 4.0.1 \\ requiredWinstVersion >= 4.10.8.6 \\ For 32 Bit \\ Installation files at http://www.tightvnc.com/download.php Send questions to //[[hungerharke@gmx.de|Thomas_H]] 2011/10/28 14:54// Tree: TightVNC.jpg TightVNC.reg Tightvnc_win7.reg delsub.ins setup.ins tightvnc_*version*-setup.exe uninstall.ins __Hint__: The reg-files set predefined options for the whole network. Install TightVNC on a test-system, define the tightvnc-server, define a password and open the registry. \\ Save the following trees to the defined reg-files listed in the tree. **Windows XP:** HKLM\Software\TightVNC\Server \\ **Win7 :** HKLM\Software\Wow6432Node\TightVNC\Server ==== 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_architecture$ DefVar $Version$ DefVar $Inst_Cmd32$ DefVar $Inst_Cmd64$ DefVar $Inst_Prg$ DefVar $Uninst_Prg$ 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$ = "TightVNC" Set $Version$ = "2.0.4" Set $MinimumSpace$ = "3 MB" ; the path were we find the product after the installation Set $InstallDir32$ = "%ProgramFilesDir%\TightVNC" Set $LicenseRequired$ = "false" Set $LicensePool$ = "p_" + $ProductId$ Set $Inst_Prg$ = "tightvnc-2.0.4-setup.exe" Set $Uninst_Prg$ = "uninstall.exe" Set $Inst_Cmd32$ = '/S' ; ---------------------------------------------------------------- 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$ + ".jpg" $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 comment "installing" if (($INST_SystemType$ = "x86 System") and ($INST_architecture$ = "system specific")) or ($INST_architecture$ = "both") or ($INST_architecture$ = "32 only") Message "Installing " + $ProductId$ + " 32 Bit..." comment "Start setup program" Winbatch_install_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 "Installing " + $ProductId$ + " 64 Bit..." comment "Start setup program" Winbatch_install_64 Sub_check_exitcode endif endif [Winbatch_install_32] %ScriptPath%\$Inst_Prg$ $Inst_Cmd32$ regedit /S "%ScriptPath%\TightVNC.reg" [Winbatch_install_64] %ScriptPath%\$Inst_Prg$ $Inst_Cmd32$ regedit /S "%ScriptPath%\TightVNC_win7.reg" [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 ==== [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 $ExitCode$ DefVar $ProductId$ DefVar $InstallDir32$ DefVar $InstallDir64$ DefVar $LicenseRequired$ DefVar $LicensePool$ DefVar $INST_SystemType$ DefVar $INST_architecture$ DefVar $Inst_Cmd$ DefVar $Inst_Prg$ Set $INST_SystemType$ = GetSystemType set $INST_architecture$ = GetProductProperty("install_architecture","system specific") Set $LogDir$ = "%SystemDrive%\tmp" ; ---------------------------------------------------------------- ; - Please edit the following values - ; ---------------------------------------------------------------- Set $ProductId$ = "TightVNC" Set $InstallDir32$ = "%ProgramFilesDir%\TightVNC" Set $LicenseRequired$ = "false" Set $LicensePool$ = "p_" + $ProductId$ Set $Inst_Prg$ = "uninstall.exe" Set $Inst_Cmd$ = '/S' ; ---------------------------------------------------------------- comment "Show product picture" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".jpg" $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 ==== killtask "tvnserver.exe" if (($INST_SystemType$ = "x86 System") and ($INST_architecture$ = "system specific")) or ($INST_architecture$ = "both") or ($INST_architecture$ = "32 only") Message "Uninstalling " + $ProductId$ + " 32 Bit..." if FileExists($UninstallProgram32$) comment "Uninstall program found, starting uninstall" Winbatch_uninstall_32 comment "Removing "+$InstallDir32$ Files_uninstall_32 sub_check_exitcode endif Mendif if ($INST_SystemType$ = "64 Bit System") and (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only")) Message "Uninstalling " + $ProductId$ + " 64 Bit..." ; Achtung, nachfolgende Hinweise auf ...32 sind keine Fehler - TightVNC gibt es derzeit nur als 32-Bit-Variante! if FileExists($UninstallProgram32$) comment "Uninstall program found, starting uninstall" Winbatch_uninstall_32 comment "Removing "+$InstallDir32$ Files_uninstall_32 sub_check_exitcode endif endif [Winbatch_uninstall_32] "$InstallDir32$\$Inst_Prg$" $Inst_Cmd$ [Files_uninstall_32] ; Example for recursively deleting the installation directory (don't forget the trailing backslash): ; delete -sf "$InstallDir32$\" [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