User Tools

Site Tools


userspace:tightvnc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
userspace:tightvnc [2011/10/28 13:06]
Thomas_H
userspace:tightvnc [2021/08/23 08:37] (current)
Line 1: Line 1:
 +== 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:\\
 +<code winst>
 +├ CLIENT_DATA
 +│ ├ delsub3264.ins
 +│ ├ setup3264.ins
 +│ ├ tightVNC.png
 +│ ├ uninstall3264.ins
 +│ ├ vncX86.msi
 +│ └ vncX64.msi
 +├ OPSI
 +│ └ control
 +</code winst>
 +
 +==== Steps ====
 +  - Download TightVNC (x64, x86)
 +
 +
 +==== setup.ins ====
 +<code winst>
 +[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%\<path to the product>"
 +Set $InstallDir64$      = "%ProgramFiles64Dir%\<path to the product>"
 +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 -------------------------------------------------------------------
 +;-------------------------------------------------------------------------------
 +
 +
 +
 +</code>
 +
 +==== uninstall.ins ====
 +<code winst>
 +; 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$)</code>
 +
 +==== delsub.ins ====
 +<code Winst>
 +; 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</code>
 +
 +
 +
 +
 +<code>
 +[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
 +
 +
 +</code>
 +
 +
 +
 +
 +
 +====== Old Version with EXE installer ======
 +
 Tested with opsi 4.0.1 \\ Tested with opsi 4.0.1 \\
 requiredWinstVersion >= 4.10.8.6 \\ requiredWinstVersion >= 4.10.8.6 \\
Line 303: Line 882:
  
 </code> </code>
- 
userspace/tightvnc.1319807190.txt.gz · Last modified: 2021/08/23 08:37 (external edit)