我正在使用 Inno 设置为游戏创建和安装程序,我想提示用户并询问他们是否要安装 DirectX9(我已经在子文件夹中拥有完整的安装 Directx 文件),然后如果他们说的话为他们安装它是或否...我不确定如何执行此操作并且编程知识有限。请帮忙!
2 回答
使用此代码显示带有问题和是/否按钮的消息框:
// Ask the user a Yes/No question
if MsgBox('Are you sure?', mbConfirmation, MB_YESNO) = IDYES then
begin
// User clicked Yes
// Install the DirectX now... (see below)
end;
这段代码执行(启动)DXSETUP.exe
var
ResultCode: Integer;
// Launch DXSETUP and wait for it to terminate
Exec('DXSETUP.exe', '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
我认为您需要将 DirectX 文件打包到安装程序中并将其解压缩到 {tmp} 目录 - 或者您可以从 CD/DVD 运行它(如示例所示)。
请参阅此问题以了解高级 DXSETUP:如何从 Inno-setup 安装 DirectX redistributable?
如果您需要检测 DX 版本,请检查:http ://www.vincenzo.net/isxkb/index.php?title=DirectX_-_How_to_detect_DirectX_version
您可以使用一个[Tasks]
条目在其中一个向导页面上显示一个复选框,提示他们是否安装/升级 DX(并且您可以选择默认情况下是勾选还是取消勾选)。
对于实际安装,最简单的选择是使用[Run]
带有Tasks:
参数的条目链接到[Tasks]
您创建的条目;但请记住,这将在您的游戏之后安装,您将无法捕捉到它可能引发的任何错误。(不过,这通常不是这类事情的问题。)
另一种选择是在;中使用PrepareToInstall
事件函数。[Code]
为此,您将需要使用ExtractTemporaryFile
and Exec
。这将在您的游戏之前安装它,并让您检查退出代码以处理错误并在需要时重新启动请求。有关更多详细信息,请参阅 Inno 随附的示例脚本,但这可能比 DX 安装所需的复杂。
您还需要决定是要捆绑 DX 的 Web 安装程序还是完整安装程序。前者较小,但需要在安装时访问 Internet;后者将使您的安装程序更大,但不需要 Internet 访问。如果您从 DVD 安装,那么后者是最好的选择(在这种情况下,您可以直接从 DVD 运行它,{src}
而不是捆绑它[Files]
)。