123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- [Setup]
- #ifdef WIN64
- ArchitecturesInstallIn64BitMode=x64
- AppName=TigerVNC 64-bit
- AppVerName=TigerVNC 64-bit @VERSION@ (@BUILD@)
- #else
- AppName=TigerVNC
- AppVerName=TigerVNC v@VERSION@ (@BUILD@)
- #endif
- AppVersion=@VERSION@
- AppPublisher=TigerVNC project
- AppPublisherURL=http://tigervnc.org
- DefaultDirName={pf}\TigerVNC
- #ifdef WIN64
- DefaultGroupName=TigerVNC 64-bit
- #else
- DefaultGroupName=TigerVNC
- #endif
- LicenseFile=@CMAKE_SOURCE_DIR@\LICENCE.txt
-
- [Files]
- #ifdef BUILD_WINVNC
- Source: "@CMAKE_CURRENT_BINARY_DIR@\win\winvnc\winvnc4.exe"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
- Source: "@CMAKE_CURRENT_BINARY_DIR@\win\wm_hooks\wm_hooks.dll"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
- Source: "@CMAKE_CURRENT_BINARY_DIR@\win\vncconfig\vncconfig.exe"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
- #endif
- Source: "@CMAKE_CURRENT_BINARY_DIR@\vncviewer\vncviewer.exe"; DestDir: "{app}"; Flags: ignoreversion restartreplace;
- Source: "@CMAKE_SOURCE_DIR@\README.txt"; DestDir: "{app}"; Flags: ignoreversion
- Source: "@CMAKE_SOURCE_DIR@\LICENCE.TXT"; DestDir: "{app}"; Flags: ignoreversion
-
-
- [Icons]
- Name: "{group}\TigerVNC Viewer"; FileName: "{app}\vncviewer.exe";
- Name: "{group}\Listening TigerVNC Viewer"; FileName: "{app}\vncviewer.exe"; Parameters: "-listen";
-
- #ifdef BUILD_WINVNC
- Name: "{group}\VNC Server (User-Mode)\Run VNC Server"; FileName: "{app}\winvnc4.exe"; Parameters: "-noconsole";
- Name: "{group}\VNC Server (User-Mode)\Configure VNC Server"; FileName: "{app}\vncconfig.exe"; Parameters: "-user";
-
- Name: "{group}\VNC Server (Service-Mode)\Configure VNC Service"; FileName: "{app}\vncconfig.exe"; Parameters: "-noconsole -service";
- Name: "{group}\VNC Server (Service-Mode)\Register VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-register";
- Name: "{group}\VNC Server (Service-Mode)\Unregister VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-unregister";
- Name: "{group}\VNC Server (Service-Mode)\Start VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-noconsole -start";
- Name: "{group}\VNC Server (Service-Mode)\Stop VNC Service"; FileName: "{app}\winvnc4.exe"; Parameters: "-noconsole -stop";
- #endif
- Name: "{group}\License"; FileName: "write.exe"; Parameters: "LICENCE.TXT"; WorkingDir: "{app}"; Flags: "useapppaths"
- Name: "{group}\Read Me"; FileName: "write.exe"; Parameters: "README.txt"; WorkingDir: "{app}"; Flags: "useapppaths"
- Name: "{group}\Uninstall TigerVNC"; FileName: "{uninstallexe}"; WorkingDir: "{app}";
-
- #ifdef BUILD_WINVNC
- [Tasks]
- Name: installservice; Description: "&Register new TigerVNC Server as a system service"; GroupDescription: "Server configuration:";
- Name: startservice; Description: "&Start or restart TigerVNC service"; GroupDescription: "Server configuration:";
-
- [Run]
- Filename: "{app}\winvnc4.exe"; Parameters: "-register"; Tasks: installservice
- Filename: "net"; Parameters: "start winvnc4"; Tasks: startservice
- #endif
-
- #ifdef BUILD_WINVNC
- [Code]
-
- {--- IShellLink ---}
-
- const
- CLSID_ShellLink = '{00021401-0000-0000-C000-000000000046}';
- SLDF_RUNAS_USER = $2000;
-
- type
- IShellLinkW = interface(IUnknown)
- '{000214F9-0000-0000-C000-000000000046}'
- procedure Dummy;
- procedure Dummy2;
- procedure Dummy3;
- function GetDescription(pszName: String; cchMaxName: Integer): HResult;
- function SetDescription(pszName: String): HResult;
- function GetWorkingDirectory(pszDir: String; cchMaxPath: Integer): HResult;
- function SetWorkingDirectory(pszDir: String): HResult;
- function GetArguments(pszArgs: String; cchMaxPath: Integer): HResult;
- function SetArguments(pszArgs: String): HResult;
- function GetHotkey(var pwHotkey: Word): HResult;
- function SetHotkey(wHotkey: Word): HResult;
- function GetShowCmd(out piShowCmd: Integer): HResult;
- function SetShowCmd(iShowCmd: Integer): HResult;
- function GetIconLocation(pszIconPath: String; cchIconPath: Integer;
- out piIcon: Integer): HResult;
- function SetIconLocation(pszIconPath: String; iIcon: Integer): HResult;
- function SetRelativePath(pszPathRel: String; dwReserved: DWORD): HResult;
- function Resolve(Wnd: HWND; fFlags: DWORD): HResult;
- function SetPath(pszFile: String): HResult;
- end;
-
- IShellLinkDataList = interface(IUnknown)
- '{45E2B4AE-B1C3-11D0-B92F-00A0C90312E1}'
- function AddDataBlock(pDataBlock : DWORD) : HResult;
- function CopyDataBlock(dwSig : DWORD; var ppDataBlock : DWORD) : HResult;
- function RemoveDataBlock(dwSig : DWORD) : HResult;
- function GetFlags(var pdwFlags : DWORD) : HResult;
- function SetFlags(dwFlags : DWORD) : HResult;
- end;
-
- IPersist = interface(IUnknown)
- '{0000010C-0000-0000-C000-000000000046}'
- function GetClassID(var classID: TGUID): HResult;
- end;
-
- IPersistFile = interface(IPersist)
- '{0000010B-0000-0000-C000-000000000046}'
- function IsDirty: HResult;
- function Load(pszFileName: String; dwMode: Longint): HResult;
- function Save(pszFileName: String; fRemember: BOOL): HResult;
- function SaveCompleted(pszFileName: String): HResult;
- function GetCurFile(out pszFileName: String): HResult;
- end;
-
- var
- OSVersion: TWindowsVersion;
-
- function InitializeSetup: Boolean;
- begin
- GetWindowsVersionEx(OSVersion);
- Result := True;
- end;
-
- procedure SetRunAsUserFlag(Path: String);
- var
- Obj: IUnknown;
- SL: IShellLinkW;
- SDL: IShellLinkDataList;
- PF: IPersistFile;
- Flags: DWord;
- begin
- Obj := CreateComObject(StringToGuid(CLSID_ShellLink));
- SL := IShellLinkW(Obj);
- PF := IPersistFile(Obj);
- SDL := IShellLinkDataList(Obj);
- Path := ExpandConstant(Path);
- OleCheck(PF.Load(Path, 0));
- OleCheck(SDL.GetFlags(Flags));
- OleCheck(SDL.SetFlags(Flags or SLDF_RUNAS_USER));
- OleCheck(PF.Save(Path, True));
- end;
-
- procedure CurStepChanged(CurStep: TSetupStep);
- var
- Flags: DWord;
- begin
- { Post-install actions on Windows Vista and higher:
- o Modify Service-Mode start menu commands so they run as administrator.
- o Set up the SoftwareSASGeneration system policy so as to allow services to simulate Ctrl+Alt+Del. }
- if (CurStep = ssPostInstall) and (OSVersion.Major >= 6) then begin
- SetRunAsUserFlag('{group}\VNC Server (Service-Mode)\Configure VNC Service.lnk');
- SetRunAsUserFlag('{group}\VNC Server (Service-Mode)\Register VNC Service.lnk');
- SetRunAsUserFlag('{group}\VNC Server (Service-Mode)\Unregister VNC Service.lnk');
- SetRunAsUserFlag('{group}\VNC Server (Service-Mode)\Start VNC Service.lnk');
- SetRunAsUserFlag('{group}\VNC Server (Service-Mode)\Stop VNC Service.lnk');
- if not RegQueryDWordValue(
- HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System',
- 'SoftwareSASGeneration', Flags
- ) then Flags := 0;
- RegWriteDWordValue(
- HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System',
- 'SoftwareSASGeneration', Flags or 1
- );
- end;
- end;
- #endif
|