Changed: the editor will now show more detailed messages when unable to initialize DirectX 9.

Updated Inno Setup file.
This commit is contained in:
MaxED 2015-10-23 14:51:37 +00:00
parent b68ecf502e
commit 375f857eb8
2 changed files with 23 additions and 10 deletions

View file

@ -58,6 +58,7 @@ Source: Plugins\ColorPicker.dll; DestDir: {app}\Plugins; Flags: ignoreversion
Source: Plugins\CommentsPanel.dll; DestDir: {app}\Plugins; Flags: ignoreversion
Source: Plugins\NodesViewer.dll; DestDir: {app}\Plugins; Flags: ignoreversion
Source: Plugins\SoundPropagationMode.dll; DestDir: {app}\Plugins; Flags: ignoreversion
Source: Plugins\StairSectorBuilder.dll; DestDir: {app}\Plugins; Flags: ignoreversion
Source: Plugins\TagExplorer.dll; DestDir: {app}\Plugins; Flags: ignoreversion
Source: Plugins\TagRange.dll; DestDir: {app}\Plugins; Flags: ignoreversion
Source: Plugins\VisplaneExplorer.dll; DestDir: {app}\Plugins; Flags: ignoreversion
@ -77,7 +78,7 @@ Name: {app}\Builder.pdb; Type: files
Name: {app}\Builder.xml; Type: files
[Registry]
Root: HKLM; Subkey: SOFTWARE\CodeImp\GZDoom Builder\; ValueType: string; ValueName: Location; ValueData: {app}; Flags: uninsdeletevalue
Root: HKLM; Subkey: SOFTWARE\MaxED\GZDoom Builder\; ValueType: string; ValueName: Location; ValueData: {app}; Flags: uninsdeletevalue
[Messages]
ReadyLabel2a=Continue to begin with the installation, or click Back if you want to review or change any settings.
@ -114,6 +115,7 @@ var
MajorVer, MinorVer: Integer;
StartPos: Integer;
TempStr, VerStr: string;
HasRequiredDll : Boolean;
begin
if (RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\DirectX', 'Version', VerStr)) then begin
(* Extract major version *)
@ -126,7 +128,10 @@ begin
(* Extract minor version *)
MinorVer := StrToInt(Copy(TempStr, 1, StartPos - 1));
Result := (MajorVer > 4) or ((MajorVer = 4) and (MinorVer >= 9));
//mxd. The DX version alone is not accurate enough...
HasRequiredDll := FileExists(ExpandConstant('{syswow64}\d3dx9_43.dll'));
Result := ((MajorVer > 4) or ((MajorVer = 4) and (MinorVer >= 9))) and HasRequiredDll;
end
else begin
Result := false;
@ -135,7 +140,11 @@ end;
function CheckVCIsInstalled(): Boolean;
begin
Result := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9BE518E6-ECC6-35A9-88E4-87755C07200F}');
//mxd. Any VC++ 2008 package will do, I assume...
//mxd. Registry values gartered from http://blogs.msdn.com/b/astebner/archive/2009/01/29/9384143.aspx
Result := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}') or
RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9A25302D-30C0-39D9-BD6F-21E6EC160475}') or
RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}');
end;
// When the wizard initializes
@ -290,7 +299,7 @@ begin
// See the return codes here: http://support.microsoft.com/kb/177430
tempfile := RemoveBackslash(GetTempDir()) + '\dxwebsetup.exe';
FileCopy(ExpandConstant('{tmp}\dxwebsetup.exe'), tempfile, false);
Exec(tempfile, '/silent', '', SW_SHOW, ewWaitUntilTerminated, errorcode);
Exec(tempfile, '/Q', '', SW_SHOW, ewWaitUntilTerminated, errorcode);
if(errorcode = 1) then begin
// Success, but restart needed!
@ -342,8 +351,12 @@ end;
//Remove configs?
procedure DeinitializeUninstall();
begin
if MsgBox('Delete program configuration files?', mbConfirmation, MB_YESNO) = IDYES then
if MsgBox('Delete map restore data and program configuration files?', mbConfirmation, MB_YESNO) = IDYES then
begin
// Remove restore data
DelTree(ExpandConstant('{localappdata}\Doom Builder\Restore'), True, True, True);
// Remove configs
DeleteFile(ExpandConstant('{localappdata}\Doom Builder\GZBuilder.cfg'));
DeleteFile(ExpandConstant('{localappdata}\Doom Builder\GZBuilder.log'));
DeleteFile(ExpandConstant('{localappdata}\Doom Builder\GZCrash.txt'));

View file

@ -651,8 +651,8 @@ namespace CodeImp.DoomBuilder
// Start Direct3D
General.WriteLogLine("Starting Direct3D graphics driver...");
try { D3DDevice.Startup(); }
catch(Direct3D9NotFoundException) { AskDownloadDirectX(); return; }
catch(Direct3DX9NotFoundException) { AskDownloadDirectX(); return; }
catch(Direct3D9NotFoundException e) { AskDownloadDirectX(e.Message); return; }
catch(Direct3DX9NotFoundException e) { AskDownloadDirectX(e.Message); return; }
// Load plugin manager
General.WriteLogLine("Loading plugins...");
@ -770,7 +770,7 @@ namespace CodeImp.DoomBuilder
}
// This asks the user to download DirectX
private static void AskDownloadDirectX()
private static void AskDownloadDirectX(string message)
{
// Cancel loading map from command-line parameters, if any.
// This causes problems, because when the window is shown, the map will
@ -778,8 +778,8 @@ namespace CodeImp.DoomBuilder
CancelAutoMapLoad();
// Ask the user to download DirectX
if(MessageBox.Show("This application requires the latest version of Microsoft DirectX 9.0 installed on your computer." + Environment.NewLine +
"Do you want to install and/or update Microsoft DirectX 9.0 now?", "DirectX Error", MessageBoxButtons.YesNo,
if(MessageBox.Show("Unable to initialize DirectX: " + message + Environment.NewLine + Environment.NewLine +
"Do you want to install and/or update Microsoft DirectX 9.0 now?", "DirectX 9.0 Error", MessageBoxButtons.YesNo,
MessageBoxIcon.Exclamation) == DialogResult.Yes)
{
// Go to DirectX End-User Runtime Web Installer page (mxd)