Я получаю «Доступ запрещен» ошибка прямо из коробки.
Вот мой .iss
файл:
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "MyApp"
#define MyAppVersion "1.5"
#define MyAppPublisher "InteXX"
#define MyAppURL "https://www.intexx.com/"
#define MyAppExeName "MyApp.exe"
[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={{2F651F6A-6F25-4B73-BC69-C2DC1E04420F}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
CreateAppDir=no
; Remove the following line to run in administrative install mode (install for all users.)
PrivilegesRequired=lowest
OutputBaseFilename=MyApp
SetupIconFile=D:\Dev\Projects\Testing\MyApp\MyApp\Icon.ico
Compression=lzma
SolidCompression=yes
WizardStyle=modern
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[Files]
Source: "D:\Dev\Projects\Testing\MyApp\Config\bin\Debug\Config.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Work\AppData\Local\InteXX\MyApp\Releases\Setup.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Run]
Filename: "{tmp}\MyApp\Config.exe"; Flags: waituntilterminated skipifdoesntexist
Filename: "{tmp}\MyApp\Setup.exe"; Flags: waituntilterminated skipifdoesntexist
.. .и вот сообщение об ошибке:
There's это Q & A , в котором обсуждается та же ошибка, но сценарий немного отличается от моего. OP пытается открыть файл после успешной установки. Я пытаюсь запустить программу установки в первую очередь.
Я попытался немного изменить значение DestDir
:
DestDir: "{app}\MyApp";
... и:
DestDir: "{app}\MyApp\";
Однако и это не удалось.
Некоторые соображения:
Setup.exe
- это Сгенерированный белкой установочный файл Config.exe
- это небольшой исполняемый файл-заглушка, который ничего не делает, кроме установки переменной среды SQUIRREL_TEMP
, чтобы указать пользовательскую папку установки для MyApp
- Единственная причина, по которой я вообще использую Inno, заключается в том, что я может установить значение переменной перед запуском Squirrel
- Я намеренно пропускаю любой целевой каталог в моем
.iss
файле, поскольку Squirrel будет использовать значение, содержащееся в переменной
Учитывая выше, как мне изменить мой файл .iss
для успешной установки?
Редактировать 1: Согласно предложению Лекса в комментариях, я внес некоторые изменения в свой .iss
файл:
[Files]
Source: "D:\Dev\Projects\Testing\MyApp\Config\bin\Debug\Config.exe"; DestDir: "{tmp}"; Flags: ignoreversion
Source: "D:\Dev\Projects\Testing\MyApp\MyApp\bin\Debug\Setup.exe"; DestDir: "{tmp}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Run]
Filename: "{tmp}\Config.exe"; Flags: waituntilterminated skipifdoesntexist; WorkingDir: {tmp}
Filename: "{tmp}\Setup.exe"; Flags: waituntilterminated skipifdoesntexist; WorkingDir: {tmp}
Однако проблема не устранена.
Редактировать 2: По запросу Мартина в комментариях, вот файл журнала:
2020-07-11 11:36:03.621 Log opened. (Time zone: UTC-08:00)
2020-07-11 11:36:03.621 Setup version: Inno Setup version 6.0.5 (u)
2020-07-11 11:36:03.621 Original Setup EXE: D:\Dev\Projects\Testing\MyApp\MyApp\Output\MyApp.exe
2020-07-11 11:36:03.621 Setup command line: /SL5="$2E1D68,3097553,911872,D:\Dev\Projects\Testing\MyApp\MyApp\Output\MyApp.exe"
2020-07-11 11:36:03.622 Windows version: 10.0.18363 (NT platform: Yes)
2020-07-11 11:36:03.622 64-bit Windows: Yes
2020-07-11 11:36:03.622 Processor architecture: x64
2020-07-11 11:36:03.622 User privileges: None
2020-07-11 11:36:03.625 Administrative install mode: No
2020-07-11 11:36:03.625 Install mode root key: HKEY_CURRENT_USER
2020-07-11 11:36:03.713 64-bit install mode: No
2020-07-11 11:36:03.719 Created temporary directory: C:\Users\Work\AppData\Local\Temp\is-1AIP0.tmp
2020-07-11 11:36:07.329 Found 2 files to register with RestartManager.
2020-07-11 11:36:07.329 Calling RestartManager's RmGetList.
2020-07-11 11:36:07.347 RmGetList finished successfully.
2020-07-11 11:36:07.348 RestartManager found no applications using one of our files.
2020-07-11 11:36:07.431 Starting the installation process.
2020-07-11 11:36:07.448 Directory for uninstall files: C:\WINDOWS
2020-07-11 11:36:07.448 Creating new uninstall log: C:\WINDOWS\unins000.dat
2020-07-11 11:36:07.448 Fatal exception during installation process (Exception):
CreateFile failed; code 5.
Access is denied.
2020-07-11 11:36:07.448 Exception message:
2020-07-11 11:36:07.448 Message box (OK):
CreateFile failed; code 5.
Access is denied.
2020-07-11 11:36:11.110 User chose OK.
2020-07-11 11:36:11.110 Message box (OK):
Setup was not completed.
Please correct the problem and run Setup again.
2020-07-11 11:36:12.193 User chose OK.
2020-07-11 11:36:12.193 Rolling back changes.
2020-07-11 11:36:12.211 Starting the uninstallation process.
2020-07-11 11:36:12.211 Uninstallation process succeeded.
2020-07-11 11:36:13.712 Deinitializing Setup.
2020-07-11 11:36:13.783 Log closed.
Я вижу, где сейчас возникает проблема, но все еще не понимаю, как ее исправить. . Очевидно, мне нужно поместить файл (ы) удаления где-нибудь, кроме C:\WINDOWS
, но я пока не знаю, как это сделать.