我正在使用Inno设置创建和安装游戏,我想提示用户并询问他们是否要安装DirectX9(我已经在子文件夹中安装了完整的directx文件),然后为他们安装它如果他们说是或否......我不确定如何做到这一点并且编程知识有限。请帮忙!
答案 0 :(得分:3)
使用此代码显示带问题的消息框和是/否按钮:
// 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:How to install DirectX redistributable from Inno-setup?
如果您需要检测DX版本,请检查:http://www.vincenzo.net/isxkb/index.php?title=DirectX_-_How_to_detect_DirectX_version
答案 1 :(得分:1)
您可以使用[Tasks]
条目在其中一个向导页面上显示一个复选框,提示他们是否安装/升级DX(您可以选择是否要在默认情况下勾选或取消勾选)
对于实际安装,最简单的选项是使用[Run]
条目,其Tasks:
参数链接到您创建的[Tasks]
条目;但请记住,这将在您的游戏后安装,您将无法捕捉到它可能引发的任何错误。 (但这对于这类事情来说通常不是问题。)
另一种选择是使用PrepareToInstall
中的[Code]
事件函数;为此,您需要使用ExtractTemporaryFile
和Exec
。这将在您的游戏之前安装它,并允许您检查退出代码以处理错误并在需要时重新启动请求。有关详细信息,请参阅Inno附带的示例脚本,但这可能比DX安装所需的更复杂。
您还需要决定是要捆绑Web安装程序还是DX的完整安装程序。前者较小,但在安装时需要访问Internet;后者将使您的安装程序更大,但不需要Internet访问。如果您是从DVD安装,那么后者是最佳选择(您可以直接从{src}
运行它,而不是在[Files]
中将其捆绑在一起)。