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

安德鲁克

使用Inno Setup编译带有我从cx_freeze使用的可执行文件的安装程序我的可执行文件在运行时可以正常运行,我绝对肯定,在使用Inno Setup Wizard设置安装程序时,我从可执行文件中添加了所有必要的依赖项但是,运行安装的可执行文件时,我仍然遇到以下问题:在此处输入图片说明

以下是我的Inno Setup编译器的代码

; 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

我读过类似的文章,暗示一些关于未为我的安装程序指定路径或python无法找到这些模块的信息。但是,我不知道该写些什么,也不愿意写。就像,是我需要在setup.py脚本中为可执行文件修复的东西,还是可以在Inno Setup Compiler脚本中修复的东西更重要的是,我需要更改或编写哪些内容才能使其正常运行?也许是因为我决定保存与mysetup.exe一起安装的.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

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

马丁·普里克里(Martin Prikryl)

如果要将文件安装到安装文件夹的子文件夹中,则必须在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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Inno Setup中删除非空文件夹

在Inno Setup中避免出现“无法展开shell文件夹常量userdocs失败”错误

Inno Setup:在“代码”部分递归复制文件夹,子文件夹和文件

Inno Setup-如何设置安装文件夹的权限

如何强制Inno Setup动态设置安装文件夹

Inno Setup-用于安装软件的文件夹,开始菜单文件夹,桌面图标均在同一页面上

在Inno Setup中对要安装文件的用户隐藏

如何在Inno Setup中为每个用户(包括将来的新用户)安装文件?

Inno Setup:为文件夹及其子文件夹中的所有文件动态添加组件

如何强制Inno Setup通过自定义向导页面中的信息动态设置安装文件夹?

如何本地化Inno Setup安装文件的VersionInfo?

删除用户在安装时在Inno Setup Uninstaller中指定的文件夹

有两个Inno Setup安装程序使用相同的{app}文件夹

Inno Setup在自定义文件夹选择页面上显示安装所需的空间

从Inno Setup从安装程序的文件夹中读取Delphi程序中的文件

Inno Setup:如果程序文件夹中存在文件,则关闭安装程序向导

Inno Setup:在卸载过程中重新启动后删除文件夹

Inno安装程序包括要安装的空文件夹时出现错误“找不到匹配的文件”

从Inno Setup中的临时文件夹安装包含的安装程序

Inno Setup查找子文件夹

安装空文件夹时访问CurrentFileName时出现Inno Setup Runtime错误

是否在“所有程序”列表中进行了其他安装的Inno安装程序子文件夹?

从应用程序安装文件夹的子文件夹中读取文件

检查Inno Setup内部临时文件夹中文件的存在

如何在Inno Setup中仅根据条件安装文件(外部配置文件)

文件夹的 Inno Setup 快捷方式未在 Windows 10 中打开

Inno setup 只删除文件夹

如何在 InitializeSetup 期间使用 inno setup 提取不同文件夹中的相同文件并将其粘贴到相应文件夹中

在 Inno Setup 创建页面中,用户可以从安装文件中打包的文件夹中选择文件