0

我正在使用 Inno 设置为游戏创建和安装程序,我想提示用户并询问他们是否要安装 DirectX9(我已经在子文件夹中拥有完整的安装 Directx 文件),然后如果他们说的话为他们安装它是或否...我不确定如何执行此操作并且编程知识有限。请帮忙!

4

2 回答 2

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:如何从 Inno-setup 安装 DirectX redistributable?

如果您需要检测 DX 版本,请检查:http ://www.vincenzo.net/isxkb/index.php?title=DirectX_-_How_to_detect_DirectX_version

于 2012-08-20T05:03:48.200 回答
1

您可以使用一个[Tasks]条目在其中一个向导页面上显示一个复选框,提示他们是否安装/升级 DX(并且您可以选择默认情况下是勾选还是取消勾选)。

对于实际安装,最简单的选择是使用[Run]带有Tasks:参数的条目链接到[Tasks]您创建的条目;但请记住,这将在您的游戏之后安装,您将无法捕捉到它可能引发的任何错误。(不过,这通常不是这类事情的问题。)

另一种选择是在;中使用PrepareToInstall事件函数。[Code]为此,您将需要使用ExtractTemporaryFileand Exec。这将在您的游戏之前安装它,并让您检查退出代码以处理错误并在需要时重新启动请求。有关更多详细信息,请参阅 Inno 随附的示例脚本,但这可能比 DX 安装所需的复杂。

您还需要决定是要捆绑 DX 的 Web 安装程序还是完整安装程序。前者较小,但需要在安装时访问 Internet;后者将使您的安装程序更大,但不需要 Internet 访问。如果您从 DVD 安装,那么后者是最好的选择(在这种情况下,您可以直接从 DVD 运行它,{src}而不是捆绑它[Files])。

于 2012-08-20T20:19:36.827 回答