I am creating and installer for a game using Inno setup and I want to prompt the user and ask them if they want to install DirectX9 (I already have the full installation directx files in a subfolder) and then to install it for them if they say yes or no... I am not sure how to do this and have limited programming knowledge. Please help!
2 Answers
Use this code to show message box with question and Yes/No buttons:
// 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;
And this code to execute (launch) DXSETUP.exe
var
ResultCode: Integer;
// Launch DXSETUP and wait for it to terminate
Exec('DXSETUP.exe', '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
I think you need to pack your DirectX files into your installer and extract it to {tmp} directory - or you may run it from CD/DVD (as in example).
See this question for advanced DXSETUP: How to install DirectX redistributable from Inno-setup?
If you need to detect DX version check this: http://www.vincenzo.net/isxkb/index.php?title=DirectX_-_How_to_detect_DirectX_version
You can use a [Tasks]
entry to display a checkbox on one of the wizard pages prompting them whether to install/upgrade DX or not (and you can choose whether you want this to be ticked or unticked by default).
For the actual installation, the simplest option is to use a [Run]
entry with Tasks:
parameter linked to the [Tasks]
entry you created; but bear in mind that this will install after your game and you won't be able to catch any errors it might raise. (This is usually not a problem for this sort of thing though.)
The other option is to use the PrepareToInstall
event function in [Code]
; for this you will need to use ExtractTemporaryFile
and Exec
. This will install it before your game, and lets you check the exit code to handle errors and reboot requests if need be. See the example script included with Inno for more details, but this is probably more complex than you need for a DX install.
You will also need to decide whether you want to bundle the web-installer or the full-installer for DX. The former is smaller but will require Internet access at install time; the latter will make your installer larger but will not require Internet access. If you are installing from a DVD then the latter is the best option (and you could run it directly from {src}
instead of bundling it in [Files]
in that case).

- 12,637
- 4
- 53
- 93