Exteor/script/ExteorSetup_x86.iss

205 lines
8.4 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#define ExteorName 'Экстеор 4.9'
#define ExteorEXE 'Exteor.exe'
#define Platform 'x86'
#define UpdateURL 'https://drive.google.com/open?id=1IHlMMwaYlAUBRSxU1RU_hXM5mFU9-oyK&usp=drive_fs'
#define ExteorVersion() GetVersionNumbersString('..\bin\' + Platform + '\Exteor.exe')
#define ConceptDomain 'CONCEPT'
#define ExteorAppID '{EB3E39CA-7B66-42B3-8688-FE56D4BB0B23}'
#define PythonVer '3.12.2'
#define PythonRedist 'python-' + PythonVer + '.exe'
#define PythonDownload 'https://www.python.org/ftp/python/' + PythonVer + '/' + PythonRedist
#define VSRedist 'VC_redist.' + Platform + '.exe'
#define VSDownload 'https://aka.ms/vs/17/release/' + VSRedist
#define RK_Python3 'SOFTWARE\Python\PythonCore\3.12-32\InstallPath'
#define RK_PyPath 'PyPath312_32'
#define RK_VCRedistr 'SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\' + Platform
#define RK_Exteor 'SOFTWARE\CIHT Concept\Экстеор 4.9'
#define RK_ExteorUninstall 'SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{EB3E39CA-7B66-42B3-8688-FE56D4BB0B23}_is1'
[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 = {{#ExteorAppID}
AppName = {#ExteorName}
AppVersion = {#ExteorVersion}
AppVerName = {#ExteorName}
VersionInfoVersion = {#ExteorVersion}
AppPublisher = НП ЦИВТ КОНЦЕПТ
AppPublisherURL = http://www.acconcept.ru/
AppSupportURL = bugreport@acconcept.ru
AppUpdatesURL = {#UpdateURL}
DefaultDirName = {autopf64}\CIHT Concept\{#ExteorName}
DefaultGroupName = {#ExteorName}
LicenseFile = ..\distr\app\Документация\Лицензионное соглашение.rtf
SetupIconFile = ..\resource\ExteorApp.ico
SourceDir = ..\distr
OutputDir = ..\bin\{#Platform}
OutputBaseFilename = ExteorSetup
AllowNoIcons = yes
ChangesAssociations = yes
UninstallDisplayIcon={app}\{#ExteorEXE}
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Tasks]
Name: desktopicon; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
Name: quicklaunchicon; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "..\bin\x64\Exteor.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "app\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs
Source: "..\distr\app\DejaVu Sans.ttf"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\script\installDependencies.bat"; DestDir: {tmp}; Flags: deleteafterinstall
[Icons]
Name: "{group}\{#ExteorName}"; Filename: "{app}\{#ExteorEXE}"
Name: "{group}\{cm:UninstallProgram,{#ExteorName}}"; Filename: "{uninstallexe}"
Name: "{autodesktop}\{#ExteorName}"; Filename: "{app}\{#ExteorEXE}"; Tasks: desktopicon
Name: "{autodesktop}\Экстеор - Текущая версия"; Filename: "{app}\Экстеор - Текущая версия.lnk"; Tasks: desktopicon; Check: IsConceptDomain
Name: "{autoappdata}\Microsoft\Internet Explorer\Quick Launch\{#ExteorName}"; Filename: "{app}\{#ExteorEXE}"; WorkingDir: {app}; Tasks: quicklaunchicon
[CustomMessages]
russian.NewerVersionExists = Более поздняя версия {#ExteorName} уже установлена. %n%nУстанавливаемая версия: {#ExteorVersion}%nТекущая версия:
russian.SameVersionExists = На компьютере уже установлен {#ExteorName} версия {#ExteorVersion}.%n%nХотите переустановить программу?
russian.ReadMe = Ознакомиться с ReadMe
russian.CppRedist = Установка Visual C++ Redistributable...
russian.PythonInstall = Установка Python 3.9...
[Registry]
Root: HKCR; Subkey: ".oss"; ValueType: string; ValueName: ""; ValueData: "OSS File"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "OSS File"; ValueType: string; ValueName: ""; ValueData: "Операционная схема синтеза"; Flags: uninsdeletekey
Root: HKCR; Subkey: "OSS File\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\Exteor.exe,3"
Root: HKCR; Subkey: "OSS File\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\Exteor.EXE"" ""%1"""
Root: HKCR; Subkey: ".rsm"; ValueType: string; ValueName: ""; ValueData: "RSM File"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "RSM File"; ValueType: string; ValueName: ""; ValueData: "Модель РС-формы"; Flags: uninsdeletekey
Root: HKCR; Subkey: "RSM File\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\Exteor.exe,2"
Root: HKCR; Subkey: "RSM File\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\Exteor.EXE"" ""%1"""
Root: HKCR; Subkey: ".trs"; ValueType: string; ValueName: ""; ValueData: "TRS File"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "TRS File"; ValueType: string; ValueName: ""; ValueData: "Файл РС-формы КС"; Flags: uninsdeletekey
Root: HKCR; Subkey: "TRS File\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\Exteor.exe,1"
Root: HKCR; Subkey: "TRS File\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\Exteor.EXE"" ""%1"""
[Run]
Filename: "{app}\{#ExteorEXE}"; Description: "{cm:LaunchProgram,{#StringChange(ExteorName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Filename: "{app}\Документация\README.rtf"; Description: "{cm:ReadMe}"; Flags: nowait postinstall skipifsilent unchecked shellexec
Filename: "{tmp}\{#VSRedist}"; Parameters: "/install /quiet /NORESTART"; StatusMsg: {cm:CppRedist}; Check: VCRedistNeedsInstall()
Filename: "{tmp}\{#PythonRedist}"; Parameters: "/quiet InstallAllUsers=1 PrependPath=1 Include_test=0"; StatusMsg: {cm:PythonInstall}; Check: PythonNeedsInstall()
Filename: "{tmp}\installDependencies.bat"; Parameters: """{code:PythonPath}"""
[Code]
function IsPythonMissing: Boolean; forward;
function GetPythonInstallPath: String; forward;
function VCRedistNeedsInstall: Boolean; forward;
function GetExteorInstalledVersion: String; forward;
function DownloadFile(url_from: String; fileName: String): Boolean; forward;
function InitializeSetup: Boolean;
var
installedVersion: String;
comparison: Integer;
begin
installedVersion := GetExteorInstalledVersion
if installedVersion = '' then begin
Result := True
exit
end;
comparison := CompareText(installedVersion,'{#ExteorVersion}')
if comparison = 0 then
Result := MsgBox(ExpandConstant('{cm:SameVersionExists}'), mbConfirmation, MB_YESNO) = IDYES
else begin
Result := comparison <= 0
if not Result then
MsgBox(ExpandConstant('{cm:NewerVersionExists}') + installedVersion, mbInformation, MB_OK);
end
end;
function GetExteorInstalledVersion: String;
begin
if not RegQueryStringValue(HKEY_LOCAL_MACHINE,'{#RK_ExteorUninstall}', 'DisplayVersion', Result) then
Result := ''
end;
function IsConceptDomain: Boolean;
begin
Result := GetEnv('UserDomain') = '{#ConceptDomain}'
end;
function PythonNeedsInstall: Boolean;
begin
Result := IsPythonMissing;
if Result then
Result := DownloadFile('{#PythonDownload}', '{#PythonRedist}')
end;
function PythonRegistryExists: Boolean;
begin
Result := RegValueExists(HKEY_LOCAL_MACHINE, '{#RK_Python3}', '');
end;
function GetPythonInstallPath: String;
begin
Result := '';
if not PythonRegistryExists then
RegQueryStringValue(HKEY_LOCAL_MACHINE, '{#RK_Python3}', '', Result);
end;
function IsPythonMissing: Boolean;
var
python: String;
begin
python := GetPythonInstallPath;
Result := python = '';
if not Result then
Result := not FileExists(python + 'python312.dll') or not FileExists(python + 'Scripts\pip.exe');
end;
function VCRedistNeedsInstall(): Boolean;
begin
Result := not RegValueExists(HKEY_LOCAL_MACHINE, '{#RK_VCRedistr}', 'Version');
if Result then
Result := DownloadFile('{#VSDownload}', '{#VSRedist}')
end;
function DownloadFile(url_from: String; fileName: String): Boolean;
begin
try
DownloadTemporaryFile(url_from, fileName, '', nil);
Result := True;
except
Log(GetExceptionMessage);
Result := False;
end;
end;
function PythonPath(dummyValue: String): String;
begin
Result := GetPythonInstallPath
end;
procedure DeinitializeSetup();
var
python: String;
destination: String;
begin
python := GetPythonInstallPath + 'python312.dll';
destination := ExpandConstant('{app}\python312.dll')
if FileExists(python) then
FileCopy(python, destination, False);
end;