Beta_cartrigesg_bd Beta v0.12
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#define MyAppVersion "2.0"
|
||||
#define MyAppPublisher "Inv_web"
|
||||
#define MyAppExeName "Inv_web Client.exe"
|
||||
#define RustDeskInstaller "installer\prerequisites\rustdesk.exe"
|
||||
|
||||
[Setup]
|
||||
AppId={{6F0D1694-CACE-4F7D-97A2-BB01C240775B}
|
||||
@@ -10,7 +11,7 @@ AppVersion={#MyAppVersion}
|
||||
AppPublisher={#MyAppPublisher}
|
||||
DefaultDirName={localappdata}\Programs\{#MyAppName}
|
||||
DefaultGroupName={#MyAppName}
|
||||
PrivilegesRequired=lowest
|
||||
PrivilegesRequired=admin
|
||||
OutputDir=dist
|
||||
OutputBaseFilename=Inv_web_Client_Setup
|
||||
SetupIconFile=picture\ICON\icon_client.ico
|
||||
@@ -31,6 +32,8 @@ Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
|
||||
|
||||
[Files]
|
||||
Source: "dist\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "{#RustDeskInstaller}"; DestDir: "{tmp}"; DestName: "rustdesk-installer.exe"; Flags: deleteafterinstall noencryption; Check: ShouldInstallRustDesk
|
||||
Source: "installer\configure_rustdesk.ps1"; DestDir: "{tmp}"; Flags: deleteafterinstall noencryption; Check: ShouldInstallRustDesk
|
||||
|
||||
[Icons]
|
||||
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
||||
@@ -42,12 +45,56 @@ Filename: "{app}\{#MyAppExeName}"; Description: "Запустить {#MyAppName}
|
||||
|
||||
[Code]
|
||||
var
|
||||
InstallModePage: TInputOptionWizardPage;
|
||||
RustDeskServerPage: TInputQueryWizardPage;
|
||||
RustDeskPasswordPage: TInputQueryWizardPage;
|
||||
ConnectionPage: TInputQueryWizardPage;
|
||||
|
||||
function IsManualRustDeskMode: Boolean;
|
||||
begin
|
||||
Result := InstallModePage.SelectedValueIndex = 1;
|
||||
end;
|
||||
|
||||
function ShouldInstallRustDesk: Boolean;
|
||||
begin
|
||||
Result := InstallModePage.SelectedValueIndex <> 2;
|
||||
end;
|
||||
|
||||
procedure InitializeWizard;
|
||||
begin
|
||||
ConnectionPage := CreateInputQueryPage(
|
||||
InstallModePage := CreateInputOptionPage(
|
||||
wpWelcome,
|
||||
'Режим установки',
|
||||
'Выберите состав установки',
|
||||
'Клиент Inv_web устанавливается во всех режимах.',
|
||||
True,
|
||||
False
|
||||
);
|
||||
InstallModePage.Add('Автоматический режим с RustDesk');
|
||||
InstallModePage.Add('Ручной режим с сервером RustDesk');
|
||||
InstallModePage.Add('Установка без RustDesk (удалённого доступа)');
|
||||
InstallModePage.SelectedValueIndex := 0;
|
||||
|
||||
RustDeskServerPage := CreateInputQueryPage(
|
||||
InstallModePage.ID,
|
||||
'Сервер RustDesk',
|
||||
'Укажите параметры собственного сервера',
|
||||
'Введите адреса серверов RustDesk и публичный ключ сервера.'
|
||||
);
|
||||
RustDeskServerPage.Add('Сервер ID:', False);
|
||||
RustDeskServerPage.Add('Ретранслятор:', False);
|
||||
RustDeskServerPage.Add('Key:', False);
|
||||
|
||||
RustDeskPasswordPage := CreateInputQueryPage(
|
||||
RustDeskServerPage.ID,
|
||||
'Фиксированный пароль RustDesk',
|
||||
'Настройте постоянный пароль удалённого доступа',
|
||||
'Оставьте поле пустым, чтобы пропустить этот шаг и не задавать пароль.'
|
||||
);
|
||||
RustDeskPasswordPage.Add('Фиксированный пароль:', True);
|
||||
|
||||
ConnectionPage := CreateInputQueryPage(
|
||||
RustDeskPasswordPage.ID,
|
||||
'Подключение к серверу',
|
||||
'Укажите параметры подключения клиента',
|
||||
'Введите адрес сервера и токен. Эти данные будут сохранены в профиле текущего пользователя.'
|
||||
@@ -56,9 +103,77 @@ begin
|
||||
ConnectionPage.Add('Токен:', True);
|
||||
end;
|
||||
|
||||
function ShouldSkipPage(PageID: Integer): Boolean;
|
||||
begin
|
||||
Result := False;
|
||||
|
||||
if (PageID = RustDeskServerPage.ID) and
|
||||
(not IsManualRustDeskMode) then
|
||||
begin
|
||||
Result := True;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
if (PageID = RustDeskPasswordPage.ID) and
|
||||
(not ShouldInstallRustDesk) then
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
function ContainsUnsafeCommandLineCharacters(const Value: String): Boolean;
|
||||
begin
|
||||
Result :=
|
||||
(Pos('"', Value) > 0) or
|
||||
(Pos(#13, Value) > 0) or
|
||||
(Pos(#10, Value) > 0);
|
||||
end;
|
||||
|
||||
function NextButtonClick(CurPageID: Integer): Boolean;
|
||||
begin
|
||||
Result := True;
|
||||
|
||||
if CurPageID = RustDeskServerPage.ID then
|
||||
begin
|
||||
if Trim(RustDeskServerPage.Values[0]) = '' then
|
||||
begin
|
||||
MsgBox('Укажите сервер ID RustDesk.', mbError, MB_OK);
|
||||
Result := False;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
if Trim(RustDeskServerPage.Values[1]) = '' then
|
||||
begin
|
||||
MsgBox('Укажите ретранслятор RustDesk.', mbError, MB_OK);
|
||||
Result := False;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
if Trim(RustDeskServerPage.Values[2]) = '' then
|
||||
begin
|
||||
MsgBox('Укажите публичный Key сервера RustDesk.', mbError, MB_OK);
|
||||
Result := False;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
if ContainsUnsafeCommandLineCharacters(RustDeskServerPage.Values[0]) or
|
||||
ContainsUnsafeCommandLineCharacters(RustDeskServerPage.Values[1]) or
|
||||
ContainsUnsafeCommandLineCharacters(RustDeskServerPage.Values[2]) then
|
||||
begin
|
||||
MsgBox('Параметры RustDesk не должны содержать кавычки или переносы строк.', mbError, MB_OK);
|
||||
Result := False;
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
if CurPageID = RustDeskPasswordPage.ID then
|
||||
begin
|
||||
if ContainsUnsafeCommandLineCharacters(RustDeskPasswordPage.Values[0]) then
|
||||
begin
|
||||
MsgBox('Пароль RustDesk не должен содержать кавычки или переносы строк.', mbError, MB_OK);
|
||||
Result := False;
|
||||
end;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
if CurPageID <> ConnectionPage.ID then
|
||||
Exit;
|
||||
|
||||
@@ -76,14 +191,100 @@ begin
|
||||
Exit;
|
||||
end;
|
||||
|
||||
if (Pos('"', ConnectionPage.Values[0]) > 0) or
|
||||
(Pos('"', ConnectionPage.Values[1]) > 0) then
|
||||
if ContainsUnsafeCommandLineCharacters(ConnectionPage.Values[0]) or
|
||||
ContainsUnsafeCommandLineCharacters(ConnectionPage.Values[1]) then
|
||||
begin
|
||||
MsgBox('Адрес сервера и токен не должны содержать двойные кавычки.', mbError, MB_OK);
|
||||
MsgBox('Адрес сервера и токен не должны содержать кавычки или переносы строк.', mbError, MB_OK);
|
||||
Result := False;
|
||||
end;
|
||||
end;
|
||||
|
||||
function GetRustDeskMode(Param: String): String;
|
||||
begin
|
||||
if IsManualRustDeskMode then
|
||||
Result := 'manual'
|
||||
else
|
||||
Result := 'automatic';
|
||||
end;
|
||||
|
||||
function GetRustDeskIdServer(Param: String): String;
|
||||
begin
|
||||
Result := Trim(RustDeskServerPage.Values[0]);
|
||||
end;
|
||||
|
||||
function GetRustDeskRelayServer(Param: String): String;
|
||||
begin
|
||||
Result := Trim(RustDeskServerPage.Values[1]);
|
||||
end;
|
||||
|
||||
function GetRustDeskKey(Param: String): String;
|
||||
begin
|
||||
Result := Trim(RustDeskServerPage.Values[2]);
|
||||
end;
|
||||
|
||||
function GetRustDeskPassword(Param: String): String;
|
||||
begin
|
||||
Result := RustDeskPasswordPage.Values[0];
|
||||
end;
|
||||
|
||||
function QuoteArgument(const Value: String): String;
|
||||
begin
|
||||
Result := '"' + Value + '"';
|
||||
end;
|
||||
|
||||
procedure CurStepChanged(CurStep: TSetupStep);
|
||||
var
|
||||
ExitCode: Integer;
|
||||
ConfigurationPath: String;
|
||||
ConfigurationText: String;
|
||||
PowerShellPath: String;
|
||||
Parameters: String;
|
||||
begin
|
||||
if (CurStep <> ssPostInstall) or (not ShouldInstallRustDesk) then
|
||||
Exit;
|
||||
|
||||
WizardForm.StatusLabel.Caption := 'Установка и настройка RustDesk...';
|
||||
PowerShellPath := ExpandConstant(
|
||||
'{sys}\WindowsPowerShell\v1.0\powershell.exe'
|
||||
);
|
||||
ConfigurationPath := ExpandConstant('{tmp}\rustdesk-options.ini');
|
||||
ConfigurationText :=
|
||||
'Mode=' + GetRustDeskMode('') + #13#10 +
|
||||
'IdServer=' + GetRustDeskIdServer('') + #13#10 +
|
||||
'RelayServer=' + GetRustDeskRelayServer('') + #13#10 +
|
||||
'Key=' + GetRustDeskKey('') + #13#10 +
|
||||
'Password=' + GetRustDeskPassword('') + #13#10;
|
||||
|
||||
if not SaveStringToFile(ConfigurationPath, ConfigurationText, False) then
|
||||
RaiseException('Не удалось подготовить параметры RustDesk.');
|
||||
|
||||
Parameters :=
|
||||
'-NoProfile -NonInteractive -ExecutionPolicy Bypass -File ' +
|
||||
QuoteArgument(ExpandConstant('{tmp}\configure_rustdesk.ps1')) + ' ' +
|
||||
'-InstallerPath ' +
|
||||
QuoteArgument(ExpandConstant('{tmp}\rustdesk-installer.exe')) + ' ' +
|
||||
'-ConfigurationPath ' + QuoteArgument(ConfigurationPath);
|
||||
|
||||
ExitCode := -1;
|
||||
Exec(
|
||||
PowerShellPath,
|
||||
Parameters,
|
||||
'',
|
||||
SW_HIDE,
|
||||
ewWaitUntilTerminated,
|
||||
ExitCode
|
||||
);
|
||||
DeleteFile(ConfigurationPath);
|
||||
|
||||
if ExitCode <> 0 then
|
||||
begin
|
||||
RaiseException(
|
||||
'Не удалось установить или настроить RustDesk. Код ошибки: ' +
|
||||
IntToStr(ExitCode)
|
||||
);
|
||||
end;
|
||||
end;
|
||||
|
||||
function GetServerAddress(Param: String): String;
|
||||
begin
|
||||
Result := Trim(ConnectionPage.Values[0]);
|
||||
|
||||
Reference in New Issue
Block a user