Another couple of launch disasters forestalled today.
First, I was wondering why I have so few players with so many signups. It turns out a significant number of users can’t run the game due to “d3dx9_31.dll” missing when they try to run. So they just gave up, rather than emailed me. I kept telling people to reinstall DirectX but that wasn’t it. I finally tracked down one guy, asked him to download that file and drop it in, and the game worked. Good grief.
I had another guy tell me in the game he had a PhysX card, and after installing my game his computer kept messing up and the game kept crashing. He said he finally figured it out by downloading and installing the latest PhysX drivers. So I check the installer and I AM providing the latest already. After some testing I found that the same installer will uninstall if you run it twice. What happens is people install the game with all the defaults, they already had PhysX installed, and it got uninstalled. Or they install the game twice, with the same effect. Do they honestly expect developers to have a post-install message “Before you can play go download and install PhysX”?
I found a solution via Inno Setup, which is quite a good (and free) installer. With this change it won’t show PhysX in the list if it is already installed.
In the [Files] section:
Source: C:\RakEngine\GMInstaller\Dependencies\PhysX_7.05.06_SystemSoftware.exe; DestDir: {tmp}\PhysX; Flags: deleteafterinstall
In the [Run] section
Filename: {tmp}\PhysX\PhysX_7.05.06_SystemSoftware.exe; Description: “Install PhysX 7.05.06”; Flags: postinstall skipifsilent; Check: PhysXNotInstalled
Add a [Code] section as follows:
[Code]
var
PhysXNotInstalledCalled: Boolean;
PhysXNotInstalledResult: Boolean;
function PhysXNotInstalled(): Boolean;
begin
if not PhysXNotInstalledCalled then begin
PhysXNotInstalledResult := RegValueExists(HKEY_LOCAL_MACHINE, ‘SOFTWARE\Ageia Technologies\PhysX_A32_Engines’, ‘2.7.0’) = False;
PhysXNotInstalledCalled := True;
end;
Result := PhysXNotInstalledResult;
end;