提示在Inno安装程序中安装DirectX

时间:2012-08-19 15:30:19

标签: inno-setup

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

2 个答案:

答案 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]事件函数;为此,您需要使用ExtractTemporaryFileExec。这将在您的游戏之前安装它,并允许您检查退出代码以处理错误并在需要时重新启动请求。有关详细信息,请参阅Inno附带的示例脚本,但这可能比DX安装所需的更复杂。

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