在 Inno Setup 中将文件(依赖项)安装到安装文件夹的子文件夹(lib)中

Install files (dependencies) into subfolder (lib) of the installation folder in Inno Setup

使用 Inno Setup 编译安装程序,其中包含我从 cx_freeze 使用的可执行文件。当我 运行 我的可执行文件 运行 正确时,我绝对肯定我在使用 Inno Setup Wizard 设置我的安装程序时从可执行文件添加了所有必要的依赖项.然而,当我 运行 我安装的可执行文件时,我不断遇到以下问题:

以下是我的 Inno Setup Compiler 的代码:

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Facile"
#define MyAppVersion "0.0.3"
#define MyAppPublisher "Facade Technologies, Inc."
#define MyAppURL "https://facade-technologies.com/"
#define MyAppExeName "facile.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={{EAD17C54-8D79-446B-BF80-FFC1F4BC32BF}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\{#MyAppName}
DisableProgramGroupPage=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputDir=C:\Users\kirim
OutputBaseFilename=mysetup
SetupIconFile=C:\Users\kirim\Documents\Facade Technologies\facile\resources\facade_logo_256.ico
Compression=lzma
SolidCompression=yes
WizardStyle=modern

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "armenian"; MessagesFile: "compiler:Languages\Armenian.isl"
Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
Name: "corsican"; MessagesFile: "compiler:Languages\Corsican.isl"
Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl"
Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl"
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
Name: "icelandic"; MessagesFile: "compiler:Languages\Icelandic.isl"
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "slovak"; MessagesFile: "compiler:Languages\Slovak.isl"
Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl"
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "C:\Users\kirim\Documents\Facade Technologies\facile\build\exe.win32-3.7\facile.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\kirim\Documents\Facade Technologies\facile\build\exe.win32-3.7\api-ms-win-crt-heap-l1-1-0.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\kirim\Documents\Facade Technologies\facile\build\exe.win32-3.7\api-ms-win-crt-locale-l1-1-0.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\kirim\Documents\Facade Technologies\facile\build\exe.win32-3.7\api-ms-win-crt-math-l1-1-0.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\kirim\Documents\Facade Technologies\facile\build\exe.win32-3.7\api-ms-win-crt-runtime-l1-1-0.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\kirim\Documents\Facade Technologies\facile\build\exe.win32-3.7\api-ms-win-crt-stdio-l1-1-0.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\kirim\Documents\Facade Technologies\facile\build\exe.win32-3.7\facile.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\kirim\Documents\Facade Technologies\facile\build\exe.win32-3.7\python37.dll"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

我读过类似的 post,它暗示了一些关于未为我的安装程序指定的路径或 python 无法找到这些模块的信息。可是,我不知道写什么和穿什么写吧。比如,我需要在我的 setup.py 脚本中为我的可执行文件修复什么,或者我可以在我的 Inno Setup Compiler[=35= 中修复什么? ] 脚本?更重要的是,我需要更改或编写什么才能正确获取它 运行ning?也许,这可能是因为我决定将我的 .exe 文件保存在何处,该文件是用 mysetup.exe 安装的?有什么帮助,谢谢!

更新

我想我可能已经解决了我的问题。之前,我没有从包含所有依赖项的 .exe 文件夹中安装文件夹,而是将它们添加为文件而不是文件夹。现在我将这些文件夹添加为文件夹,但仍然存在问题,因为我没有正确安装文件夹。我需要在已安装的 .exe 文件夹中保持与我在计算机上构建的 .exe 文件夹相同的文件结构。这是将文件夹添加到我的脚本中已安装的 .exe 文件夹的示例代码行:

Source: "C:\Users\kirim\Documents\Facade Technologies\facile\build\exe.win32-3.7\lib\*"; \
    DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

问题是它会安装该文件夹中包含的所有文件夹和文件,但不会安装文件夹本身,因此我可以保持相同的文件结构(例如,我的脚本未安装 lib 文件夹,它安装文件夹中包含的所有内容,更改为 exe 的源代码设置的文件结构。

如果要将文件安装到安装文件夹的子文件夹中,必须在 DestDir 参数中指定文件夹:

[Files]
Source: "C:\...\facile\build\exe.win32-3.7\facile.exe"; DestDir: "{app}"; \
    Flags: ignoreversion
Source: "C:\...\facile\build\exe.win32-3.7\lib\*"; DestDir: "{app}\lib"; \
    Flags: ignoreversion recursesubdirs createallsubdirs

或者,如果构建文件夹仅包含您要分发的文件,请将其全部包含:

[Files]
Source: "C:\...\facile\build\exe.win32-3.7\*"; DestDir: "{app}"; \
    Flags: ignoreversion recursesubdirs createallsubdirs