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

Inno setup 提示在Inno安装程序中安装DirectX,inno-setup,Inno Setup,我正在使用Inno安装程序创建和安装一个游戏,我想提示用户,询问他们是否要安装DirectX9(我的子文件夹中已经有完整的directx安装文件),然后如果他们说是或否,就为他们安装它。。。我不知道如何做到这一点,并且编程知识有限。请帮忙 使用此代码显示带有问题和是/否按钮的消息框: // Ask the user a Yes/No question if MsgBox('Are you sure?', mbConfirmation, MB_YESNO) = IDYES then b

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

使用此代码显示带有问题和是/否按钮的消息框:

  // 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运行它(如示例所示)

有关高级DX设置,请参见此问题:


如果需要检测DX版本,请选中此项:

使用此代码显示带有问题和是/否按钮的消息框:

  // 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运行它(如示例所示)

有关高级DX设置,请参见此问题:


如果需要检测DX版本,请选中此项:

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

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

另一个选项是使用
[code]
中的
preparetoall
事件功能;为此,您需要使用
ExtractTemporaryFile
Exec
。这将在游戏开始前安装,并允许您检查退出代码以处理错误和重新启动请求(如果需要)。有关更多详细信息,请参阅Inno附带的示例脚本,但这可能比DX安装所需的更复杂


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

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

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

另一个选项是使用
[code]中的
preparetoall
事件功能
;为此,您需要使用
ExtractTemporaryFile
Exec
。这将在游戏开始前安装,并允许您检查退出代码以处理错误和重新启动请求(如果需要)。有关详细信息,请参阅Inno附带的示例脚本,但这可能比DX安装更复杂

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