Помогите, пожалуйста, с автоматизацией процесса установки - одну кнопку всего надо нажать автоматически!

Александр85

Новичок
Здравствуйте!
Помогите, пожалуйста, с автоматизацией процесса установки - одну кнопку всего надо нажать автоматически!
Проверьте, пожалуйста, мой скрипт, все что нужно это чтобы экзешник был зашифрован и пароль вводился автоматически, у меня проблема, никак не получается нажать кнопку Next автоматически, пароль уже сам вводится, единственное, что осталось это нажать кнопку Next.
Нужно чтобы никаких действий от пользователя не требовалось вообще! Все окна скрыты! Пользователь запустил экзешник и на выходе получил автоматический запуск скрипта Power Shell, все остальные промежуточные этапы его не должны касаться!
Конвертеры ps1 в exe не подходят, т.к. скрипт Power Shell не единственный, он завязан на огромной структуре файлов, папок и подпапок.

Исправьте, пожалуйста скрипт:

Код:
[Setup]
AppName=Test
AppVersion=1.0
AppPublisher=Test
DefaultDirName={tmp}
DisableDirPage=yes
OutputDir=Output
OutputBaseFilename=Test_1.0
Encryption=yes
Password=Test
DisableProgramGroupPage=yes
DisableReadyPage=yes
DisableReadyMemo=yes
DisableFinishedPage=yes
DisableStartupPrompt=yes
ShowLanguageDialog=no
Compression=zip
Uninstallable=no
AllowNoIcons=yes
CreateAppDir=no
VersionInfoCompany=Test
VersionInfoDescription=Test
VersionInfoProductName=Test
VersionInfoProductVersion=1.0.0.0
VersionInfoVersion=1.0.0.0
VersionInfoTextVersion=1.0
VersionInfoCopyright=2026 Test
SetupIconFile=H:\Test\icon.ico
PrivilegesRequired=admin

[Files]
Source: "H:\Test\*"; DestDir: "{tmp}"; Flags: ignoreversion recursesubdirs createallsubdirs

[Code]
var
  PasswordEntered: Boolean;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpPassword then
  begin
    if WizardForm.PasswordEdit <> nil then
    begin
      WizardForm.PasswordEdit.Text := 'Test';
      PasswordEntered := False;
    end;
  end;
 
  if (CurPageID > wpPassword) and (not PasswordEntered) then
  begin
    PasswordEntered := True;
    WizardForm.Left := -5000;
    WizardForm.Top := -5000;
  end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
  ResultCode: Integer;
  FullPath: String;
begin
  if CurStep = ssPostInstall then
  begin
    FullPath := ExpandConstant('{tmp}') + '\Run.ps1';
 
    if FileExists(FullPath) then
    begin
      Exec('powershell.exe', '-NoProfile -ExecutionPolicy Bypass -File "' + FullPath + '"', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
    end
    else
    begin
      MsgBox('ERROR: Run.ps1 not found!' + #13#10 + 'Path: ' + FullPath, mbError, MB_OK);
    end;
  end;
end;

Да, суть использования Инно в моем случае примитивна, как SFX-архив нужно чтобы Инно СКРЫТО распаковал все файлы, (а их очень много), во временную папку и потом запустил скрипт. Power Shell с правами Админа! Сам скрипт уже требует права Админа и проверяет, но так на всякий случай, если не будет избыточно.

Почему я тогда не использую SFX-архив? Потому что на него очень много ложных срабатываний антиврусов-параноиков - на Инно намного меньше + шифроание и пароль еще спасают!

Если есть иные варианты реализации, то только буду рад, главное чтобы скрипт работал и на версии 5x
 
Последнее редактирование:
Назад
Сверху