gpt4 book ai didi

inno-setup - Inno Setup 在安装期间启动可执行文件(以安装驱动程序)

转载 作者:行者123 更新时间:2023-12-04 03:33:21 28 4
gpt4 key购买 nike

我正在使用 Inno Setup 为我的应用程序创建安装程序。安装程序非常基础,只是复制一些文件。这很好用,我很满意。

我最近实现了 USB 支持,需要为此安装来自 IVI 基金会的 USB 驱动程序。它基本上是一个 exe 文件,必须在安装过程中的某个地方启动。到目前为止,用户必须单独安装驱动程序,这不是那么优雅。我的第一种方法是这样的:

[Run]
Filename: "{app}\driver\IviSharedComponents_2.2.1.exe"; Description: "Install USB driver (IVI Foundation)"; Flags: postinstall skipifsilent
Filename: "{app}\driver\IviSharedComponents64_2.2.1.exe"; Description: "Install 64bit USB driver (IVI Foundation)"; Flags: postinstall skipifsilent
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: postinstall skipifsilent

这有效,但用户必须选择正确的位数。这里的优点是他可以选择不安装它(在这种情况下,应用程序只会忽略 USB 功能,这很好)。我真正想要的是自动检测系统的位数并运行安装过程。这不必在 [Run] 中部分,虽然我不会反对它(因为用户可以选择不安装它)。

我还找到了一些代码并尝试像这样运行它:
[Code]
procedure CurStepChanged (CurStep: TSetupStep);
var
WorkingDir: String;
ReturnCode: Integer;
begin
if (ssInstall = CurStep) then
Log('Starting driver installation');
WorkingDir := ExpandConstant ('{app}\driver');
Exec ('IviSharedComponents_2.2.1.exe', '', WorkingDir, SW_SHOW, ewWaitUntilTerminated, ReturnCode);
end;

但这并没有开始安装(尽管我可以看到日志条目“正在开始安装驱动程序”)。我的路径有问题吗?我做错了什么,如何更改此脚本以根据位数自动选择正确的可执行文件?

编辑:我将建议的解决方案与 [Tasks] 一起使用入口。实现如下(仅供引用):
[Tasks]
Name: "install_usb"; Description: "Install USB drivers (IVI Foundation)"; GroupDescription: "External drivers:";

[Run]
Filename: "{app}\driver\IviSharedComponents_2.2.1.exe"; StatusMsg: "Installing USB driver (IVI Foundation)"; Check: Not IsWin64(); Tasks: install_usb; Flags: skipifsilent
Filename: "{app}\driver\IviSharedComponents64_2.2.1.exe"; StatusMsg: "Installing USB driver (IVI Foundation)"; Check: IsWin64(); Tasks: install_usb; Flags: skipifsilent

这很好用,非常感谢您的帮助!

最佳答案

在这种情况下,最好删除 postinstall 标志,以便它在安装过程结束时无条件运行(但在它说完成之前)并添加 Check:将其限制为正确位数的参数:

[Run]
Filename: "{app}\driver\IviSharedComponents_2.2.1.exe"; StatusMsg: "Installing USB driver (IVI Foundation)"; Check: Not IsWin64(); Flags: skipifsilent
Filename: "{app}\driver\IviSharedComponents64_2.2.1.exe"; StatusMsg: "Installing USB driver (IVI Foundation)"; Check: IsWin64(); Flags: skipifsilent

如果您希望这是有条件的,您可以使用普通的 [Tasks]在安装开始之前提示的条目。

关于inno-setup - Inno Setup 在安装期间启动可执行文件(以安装驱动程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11416536/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com