This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
userspace:tightvnc [2011/10/28 13:05] Thomas_H created |
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:// | ||
+ | |||
+ | |||
+ | |||
+ | ====== TightVNC Ver. 2.5.2 ====== | ||
+ | |||
+ | |||
+ | Tested with opsi 4.11.2.9 \\ | ||
+ | requiredWinstVersion >= Not Tested | ||
+ | Files can be downloaded at http:// | ||
+ | |||
+ | By --- // | ||
+ | |||
+ | 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 >= " | ||
+ | |||
+ | 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(" | ||
+ | |||
+ | |||
+ | Set $LogDir$ = " | ||
+ | |||
+ | ; ---------------------------------------------------------------- | ||
+ | ; - Please edit the following values | ||
+ | ; ---------------------------------------------------------------- | ||
+ | ; | ||
+ | ; therefore please: only lower letters, no umlauts, | ||
+ | ; no white space use ' | ||
+ | Set $ProductId$ | ||
+ | Set $MinimumSpace$ | ||
+ | ; the path were we find the product after the installation | ||
+ | Set $InstallDir32$ | ||
+ | Set $InstallDir64$ | ||
+ | Set $LicenseRequired$ = " | ||
+ | Set $LicensePool$ | ||
+ | ; ---------------------------------------------------------------- | ||
+ | |||
+ | if not(HasMinimumSpace (" | ||
+ | LogError "Not enough space on %SystemDrive%, | ||
+ | isFatalError | ||
+ | ; Stop process and set installation status to failed | ||
+ | else | ||
+ | comment "Show product picture" | ||
+ | ShowBitmap " | ||
+ | |||
+ | if FileExists(" | ||
+ | comment "Start uninstall sub section" | ||
+ | Sub " | ||
+ | endif | ||
+ | |||
+ | comment " | ||
+ | |||
+ | if (($INST_SystemType$ = "x86 System" | ||
+ | Message " | ||
+ | sub_generate_setupcommand | ||
+ | comment "Start setup program" | ||
+ | Winbatch_install_32 | ||
+ | Sub_check_exitcode | ||
+ | |||
+ | endif | ||
+ | |||
+ | if ($INST_SystemType$ = "64 Bit System" | ||
+ | Message " | ||
+ | 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:// | ||
+ | ; http:// | ||
+ | if ($ExitCode$ = " | ||
+ | comment "Looks good: setup program gives exitcode zero" | ||
+ | else | ||
+ | comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ | ||
+ | if ($ExitCode$ = " | ||
+ | comment " | ||
+ | comment " | ||
+ | else | ||
+ | if ($ExitCode$ = " | ||
+ | comment "looks good: setup program gives exitcode 1641" | ||
+ | comment " | ||
+ | else | ||
+ | if ($ExitCode$ = " | ||
+ | comment "looks good: setup program gives exitcode 3010" | ||
+ | comment " | ||
+ | else | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | endif | ||
+ | endif | ||
+ | endif | ||
+ | |||
+ | |||
+ | ; | ||
+ | ; Generating the Setup command | ||
+ | ; | ||
+ | [sub_generate_setupcommand] | ||
+ | ; Define String and Variables | ||
+ | DefStringList $parameter$ | ||
+ | ;Stringlist for MSI Parameter | ||
+ | DefVar $usepassword$ | ||
+ | ; | ||
+ | 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(" | ||
+ | set $parameter$= addtolist($parameter$,' | ||
+ | |||
+ | |||
+ | ;Viewer Parameter | ||
+ | |||
+ | if ($Mode$ = " | ||
+ | sub_set_ViewerOptions | ||
+ | else | ||
+ | if ($Mode$ = " | ||
+ | sub_set_ServerOptions | ||
+ | else | ||
+ | if ($Mode$ = " | ||
+ | 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$+" | ||
+ | comment $setupMSI$ | ||
+ | |||
+ | |||
+ | [sub_set_ViewerOptions] | ||
+ | set $VIEWER_ASSOCIATE_VNC_EXTENSION$ = GetproductProperty(" | ||
+ | set $VIEWER_ADD_FIREWALL_EXCEPTION$ = GetproductProperty(" | ||
+ | set $parameter$= addtolist($parameter$," | ||
+ | set $parameter$= addtolist($parameter$," | ||
+ | |||
+ | |||
+ | [sub_set_ServerOptions] | ||
+ | set $SERVER_REGISTER_AS_SERVICE$ = GetproductProperty(" | ||
+ | set $SERVER_ADD_FIREWALL_EXCEPTION$ = GetproductProperty(" | ||
+ | set $SERVER_ALLOW_SAS$ = GetproductProperty(" | ||
+ | set $password$ = " | ||
+ | |||
+ | |||
+ | set $parameter$= addtolist($parameter$," | ||
+ | |||
+ | |||
+ | |||
+ | if ($SERVER_REGISTER_AS_SERVICE$ = " | ||
+ | set $parameter$= addtolist($parameter$," | ||
+ | set $parameter$= addtolist($parameter$," | ||
+ | |||
+ | if ($usepassword$ = " | ||
+ | set $parameter$= addtolist($parameter$," | ||
+ | set $parameter$= addtolist($parameter$," | ||
+ | set $parameter$= addtolist($parameter$," | ||
+ | set $parameter$= addtolist($parameter$, | ||
+ | else | ||
+ | comment ="No Password set" | ||
+ | endif | ||
+ | |||
+ | else | ||
+ | comment = " | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ;------- End ------------------------------------------------------------------- | ||
+ | ; | ||
+ | |||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | ==== 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:// | ||
+ | |||
+ | [Actions] | ||
+ | requiredWinstVersion >= " | ||
+ | |||
+ | 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(" | ||
+ | |||
+ | |||
+ | Set $LogDir$ = " | ||
+ | |||
+ | ; ---------------------------------------------------------------- | ||
+ | ; - Please edit the following values | ||
+ | ; ---------------------------------------------------------------- | ||
+ | Set $ProductId$ | ||
+ | Set $InstallDir32$ | ||
+ | Set $InstallDir64$ | ||
+ | Set $LicenseRequired$ = " | ||
+ | Set $LicensePool$ | ||
+ | ; ---------------------------------------------------------------- | ||
+ | |||
+ | |||
+ | comment "Show product picture" | ||
+ | ShowBitmap " | ||
+ | |||
+ | Message " | ||
+ | |||
+ | if FileExists(" | ||
+ | comment "Start uninstall sub section" | ||
+ | Sub " | ||
+ | endif | ||
+ | |||
+ | if $LicenseRequired$ = " | ||
+ | comment " | ||
+ | Sub_free_license | ||
+ | endif | ||
+ | |||
+ | [Sub_free_license] | ||
+ | comment " | ||
+ | |||
+ | comment " | ||
+ | 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("", | ||
+ | ; | ||
+ | ; 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("", | ||
+ | |||
+ | ==== 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:// | ||
+ | |||
+ | |||
+ | Set $MsiId32$ = ' | ||
+ | Set $UninstallProgram32$ = $InstallDir32$ + " | ||
+ | |||
+ | Set $MsiId64$ = ' | ||
+ | Set $UninstallProgram64$ = $InstallDir64$ + " | ||
+ | |||
+ | if (($INST_SystemType$ = "x86 System" | ||
+ | Message " | ||
+ | |||
+ | if FileExists($UninstallProgram32$) | ||
+ | comment " | ||
+ | Winbatch_uninstall_32 | ||
+ | sub_check_exitcode | ||
+ | endif | ||
+ | |||
+ | if not (GetRegistryStringValue32(" | ||
+ | comment "MSI id " + $MsiId32$ + " found in registry, starting msiexec to uninstall" | ||
+ | Winbatch_uninstall_msi_32 | ||
+ | sub_check_exitcode | ||
+ | endif | ||
+ | |||
+ | comment " | ||
+ | Files_uninstall_32 /32Bit | ||
+ | comment " | ||
+ | Registry_uninstall /32Bit | ||
+ | endif | ||
+ | |||
+ | if ($INST_SystemType$ = "64 Bit System" | ||
+ | Message " | ||
+ | |||
+ | if FileExists($UninstallProgram64$) | ||
+ | comment " | ||
+ | Winbatch_uninstall_64 | ||
+ | sub_check_exitcode | ||
+ | endif | ||
+ | |||
+ | if not (GetRegistryStringValue64(" | ||
+ | comment "MSI id " + $MsiId64$ + " found in registry, starting msiexec to uninstall" | ||
+ | Winbatch_uninstall_msi_64 | ||
+ | sub_check_exitcode | ||
+ | endif | ||
+ | |||
+ | comment " | ||
+ | Files_uninstall_64 /64Bit | ||
+ | comment " | ||
+ | Registry_uninstall /64Bit | ||
+ | endif | ||
+ | |||
+ | comment " | ||
+ | LinkFolder_uninstall | ||
+ | |||
+ | [Winbatch_uninstall_32] | ||
+ | ; Choose one of the following examples as basis for program uninstall | ||
+ | ; | ||
+ | ; === Nullsoft Scriptable Install System ================================================================ | ||
+ | ; " | ||
+ | ; | ||
+ | ; === Inno Setup ======================================================================================== | ||
+ | ; " | ||
+ | |||
+ | |||
+ | [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 " | ||
+ | |||
+ | [Winbatch_uninstall_64] | ||
+ | ; Choose one of the following examples as basis for program uninstall | ||
+ | ; | ||
+ | ; === Nullsoft Scriptable Install System ================================================================ | ||
+ | ; " | ||
+ | ; | ||
+ | ; === Inno Setup ======================================================================================== | ||
+ | ; " | ||
+ | |||
+ | |||
+ | [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 " | ||
+ | |||
+ | [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:// | ||
+ | ; http:// | ||
+ | if ($ExitCode$ = " | ||
+ | comment "Looks good: setup program gives exitcode zero" | ||
+ | else | ||
+ | comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ | ||
+ | if ($ExitCode$ = " | ||
+ | comment " | ||
+ | comment " | ||
+ | else | ||
+ | if ($ExitCode$ = " | ||
+ | comment "looks good: setup program gives exitcode 1641" | ||
+ | comment " | ||
+ | else | ||
+ | if ($ExitCode$ = " | ||
+ | comment "looks good: setup program gives exitcode 3010" | ||
+ | comment " | ||
+ | else | ||
+ | logError " | ||
+ | isFatalError | ||
+ | endif | ||
+ | endif | ||
+ | endif | ||
+ | endif</ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | [Package] | ||
+ | version: 1 | ||
+ | depends: | ||
+ | incremental: | ||
+ | |||
+ | [Product] | ||
+ | type: localboot | ||
+ | id: tightvnc | ||
+ | name: TightVNC | ||
+ | description: | ||
+ | advice: Kostenfrei | ||
+ | version: 2.5.2 | ||
+ | priority: 0 | ||
+ | licenseRequired: | ||
+ | productClasses: | ||
+ | setupScript: | ||
+ | uninstallScript: | ||
+ | updateScript: | ||
+ | alwaysScript: | ||
+ | onceScript: | ||
+ | customScript: | ||
+ | userLoginScript: | ||
+ | |||
+ | [ProductProperty] | ||
+ | type: unicode | ||
+ | name: mode | ||
+ | multivalue: False | ||
+ | editable: False | ||
+ | description: | ||
+ | values: [" | ||
+ | default: [" | ||
+ | |||
+ | [ProductProperty] | ||
+ | type: unicode | ||
+ | name: viewer_associate_vnc_extension | ||
+ | multivalue: False | ||
+ | editable: False | ||
+ | description: | ||
+ | values: [" | ||
+ | default: [" | ||
+ | |||
+ | [ProductProperty] | ||
+ | type: unicode | ||
+ | name: viewer_add_firewall_exception | ||
+ | multivalue: False | ||
+ | editable: True | ||
+ | description: | ||
+ | values: [" | ||
+ | default: [" | ||
+ | |||
+ | [ProductProperty] | ||
+ | type: unicode | ||
+ | name: server_register_as_service | ||
+ | multivalue: False | ||
+ | editable: False | ||
+ | description: | ||
+ | values: [" | ||
+ | default: [" | ||
+ | |||
+ | [ProductProperty] | ||
+ | type: unicode | ||
+ | name: server_add_firewall_exception | ||
+ | multivalue: False | ||
+ | editable: False | ||
+ | description: | ||
+ | values: [" | ||
+ | default: [" | ||
+ | |||
+ | [ProductProperty] | ||
+ | type: unicode | ||
+ | name: server_allow_sas | ||
+ | multivalue: False | ||
+ | editable: False | ||
+ | values: [" | ||
+ | default: [" | ||
+ | |||
+ | [ProductProperty] | ||
+ | type: unicode | ||
+ | name: usepassword | ||
+ | multivalue: False | ||
+ | editable: False | ||
+ | description: | ||
+ | values: [" | ||
+ | default: [" | ||
+ | |||
+ | [ProductProperty] | ||
+ | type: unicode | ||
+ | name: passwort | ||
+ | multivalue: False | ||
+ | editable: True | ||
+ | description: | ||
+ | values: [" | ||
+ | default: [" | ||
+ | |||
+ | [Changelog] | ||
+ | tightvnc (2.5.2-1) testing; urgency=low | ||
+ | |||
+ | * Initial package | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== 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 17: | Line 596: | ||
</ | </ | ||
- | Hint: The reg-files set predefined options for the whole network. Install TightVNC on a test-system, | + | __Hint__: The reg-files set predefined options for the whole network. Install TightVNC on a test-system, |
Save the following trees to the defined reg-files listed in the tree. | Save the following trees to the defined reg-files listed in the tree. | ||
Line 303: | Line 882: | ||
</ | </ | ||
- |