| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- #define MyAppShortName "Telegram"
- #define MyAppName "Telegram Desktop"
- #define MyAppPublisher "Telegram FZ-LLC"
- #define MyAppURL "https://desktop.telegram.org"
- #define MyAppExeName "Telegram.exe"
- #define MyAppId "53F49750-6209-4FBF-9CA8-7A333C87D1ED"
- #define CurrentYear GetDateTimeString('yyyy','','')
- [Setup]
- ; NOTE: The value of AppId uniquely identifies this application.
- ; Do not use the same AppId value in installers for other applications.
- ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
- AppId={{{#MyAppId}}
- AppName={#MyAppName}
- AppVersion={#MyAppVersion}
- AppCopyright={#MyAppPublisher} 2014-{#CurrentYear}
- AppPublisher={#MyAppPublisher}
- AppPublisherURL={#MyAppURL}
- AppSupportURL={#MyAppURL}
- AppUpdatesURL={#MyAppURL}
- DefaultDirName={userappdata}\{#MyAppName}
- DefaultGroupName={#MyAppName}
- AllowNoIcons=yes
- OutputDir={#ReleasePath}
- SetupIconFile={#SourcePath}..\Resources\art\icon256.ico
- UninstallDisplayName={#MyAppName}
- UninstallDisplayIcon={app}\Telegram.exe
- Compression=lzma
- SolidCompression=yes
- DisableStartupPrompt=yes
- PrivilegesRequired=lowest
- VersionInfoVersion={#MyAppVersion}.0
- CloseApplications=force
- DisableDirPage=no
- DisableProgramGroupPage=no
- WizardStyle=modern
- SignTool=sha256
- #if MyBuildTarget == "winarm"
- ArchitecturesAllowed="arm64"
- OutputBaseFilename=tsetup-arm64.{#MyAppVersionFull}
- #define ArchModulesFolder "arm64"
- AppVerName={#MyAppName} {#MyAppVersion} arm64
- #elif MyBuildTarget == "win64"
- ArchitecturesAllowed="x64compatible"
- ArchitecturesInstallIn64BitMode="x64compatible"
- OutputBaseFilename=tsetup-x64.{#MyAppVersionFull}
- #define ArchModulesFolder "x64"
- AppVerName={#MyAppName} {#MyAppVersion} 64bit
- #else
- OutputBaseFilename=tsetup.{#MyAppVersionFull}
- #define ArchModulesFolder "x86"
- AppVerName={#MyAppName} {#MyAppVersion} 32bit
- #endif
- #define ModulesFolder "modules\" + ArchModulesFolder
- [Languages]
- Name: "english"; MessagesFile: "compiler:Default.isl"
- Name: "it"; MessagesFile: "compiler:Languages\Italian.isl"
- Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl"
- Name: "de"; MessagesFile: "compiler:Languages\German.isl"
- Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl"
- Name: "pt_BR"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
- Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
- Name: "fr"; MessagesFile: "compiler:Languages\French.isl"
- Name: "ua"; MessagesFile: "compiler:Languages\Ukrainian.isl"
- [Tasks]
- Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
- Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; OnlyBelowVersion: 0,6.1
- [Files]
- Source: "{#ReleasePath}\Telegram.exe"; DestDir: "{app}"; Flags: ignoreversion
- Source: "{#ReleasePath}\Updater.exe"; DestDir: "{app}"; Flags: ignoreversion
- #if MyBuildTarget != "winarm"
- Source: "{#ReleasePath}\{#ModulesFolder}\d3d\d3dcompiler_47.dll"; DestDir: "{app}\{#ModulesFolder}\d3d"; Flags: ignoreversion
- #endif
- ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
- [Icons]
- Name: "{group}\{#MyAppShortName}"; Filename: "{app}\{#MyAppExeName}"
- Name: "{group}\{cm:UninstallProgram,{#MyAppShortName}}"; Filename: "{uninstallexe}"
- Name: "{userdesktop}\{#MyAppShortName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
- Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppShortName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
- [Run]
- Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppShortName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
- [UninstallDelete]
- Type: files; Name: "{app}\data"
- Type: files; Name: "{app}\data_config"
- Type: files; Name: "{app}\log.txt"
- Type: filesandordirs; Name: "{app}\DebugLogs"
- Type: filesandordirs; Name: "{app}\tupdates"
- Type: filesandordirs; Name: "{app}\tdata"
- Type: filesandordirs; Name: "{app}\tcache"
- Type: filesandordirs; Name: "{app}\tdumps"
- Type: filesandordirs; Name: "{app}\modules"
- Type: dirifempty; Name: "{app}"
- Type: files; Name: "{userappdata}\{#MyAppName}\data"
- Type: files; Name: "{userappdata}\{#MyAppName}\data_config"
- Type: files; Name: "{userappdata}\{#MyAppName}\log.txt"
- Type: filesandordirs; Name: "{userappdata}\{#MyAppName}\DebugLogs"
- Type: filesandordirs; Name: "{userappdata}\{#MyAppName}\tupdates"
- Type: filesandordirs; Name: "{userappdata}\{#MyAppName}\tdata"
- Type: filesandordirs; Name: "{userappdata}\{#MyAppName}\tcache"
- Type: filesandordirs; Name: "{userappdata}\{#MyAppName}\tdumps"
- Type: filesandordirs; Name: "{userappdata}\{#MyAppName}\modules"
- Type: dirifempty; Name: "{userappdata}\{#MyAppName}"
- [Code]
- procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
- var ResultCode: Integer;
- begin
- if CurUninstallStep = usUninstall then
- begin
- ShellExec('', ExpandConstant('{app}\{#MyAppExeName}'), '-cleanup', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
- end;
- end;
- const CSIDL_DESKTOPDIRECTORY = $0010;
- CSIDL_COMMON_DESKTOPDIRECTORY = $0019;
- procedure CurStepChanged(CurStep: TSetupStep);
- var ResultCode: Integer;
- HasOldKey: Boolean;
- HasNewKey: Boolean;
- HasOldLnk: Boolean;
- HasNewLnk: Boolean;
- UserDesktopLnk: String;
- CommonDesktopLnk: String;
- begin
- if CurStep = ssPostInstall then
- begin
- HasNewKey := RegKeyExists(HKEY_CURRENT_USER, 'Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{#MyAppId}}_is1') or RegKeyExists(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{{#MyAppId}}_is1');
- HasOldKey := RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{{#MyAppId}}_is1') or RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{#MyAppId}}_is1');
- UserDesktopLnk := ExpandFileName(GetShellFolderByCSIDL(CSIDL_DESKTOPDIRECTORY, False) + '\{#MyAppShortName}.lnk');
- CommonDesktopLnk := ExpandFileName(GetShellFolderByCSIDL(CSIDL_COMMON_DESKTOPDIRECTORY, False) + '\{#MyAppShortName}.lnk');
- HasNewLnk := FileExists(UserDesktopLnk);
- HasOldLnk := FileExists(CommonDesktopLnk) and (UserDesktopLnk <> CommonDesktopLnk);
- if (HasOldKey and HasNewKey) or (HasOldLnk and HasNewLnk) then
- begin
- if (GetWindowsVersion >= $06000000) then // Vista or later
- ShellExec('runas', ExpandConstant('{app}\{#MyAppExeName}'), '-fixprevious', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
- else
- ShellExec('', ExpandConstant('{app}\{#MyAppExeName}'), '-fixprevious', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
- end;
- end;
- end;
|