Merge pull request #6793 from Mailaender/bleed-exc-wrap
Moved the crash monitors outside of the game executables
This commit is contained in:
31
Makefile
31
Makefile
@@ -69,7 +69,6 @@ INSTALL_DATA = $(INSTALL) -m644
|
|||||||
# program targets
|
# program targets
|
||||||
CORE = rsdl2 rnull game utility ralint
|
CORE = rsdl2 rnull game utility ralint
|
||||||
TOOLS = editor tsbuild crashdialog
|
TOOLS = editor tsbuild crashdialog
|
||||||
|
|
||||||
VERSION = $(shell git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null || echo git-`git rev-parse --short HEAD`)
|
VERSION = $(shell git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null || echo git-`git rev-parse --short HEAD`)
|
||||||
|
|
||||||
|
|
||||||
@@ -207,14 +206,14 @@ tsbuild: OpenRA.TilesetBuilder.FormBuilder.resources OpenRA.TilesetBuilder.FormN
|
|||||||
|
|
||||||
##### Launchers / Utilities #####
|
##### Launchers / Utilities #####
|
||||||
|
|
||||||
crashdialog_SRCS := $(shell find OpenRA.CrashDialog/ -iname '*.cs')
|
gamemonitor_SRCS := $(shell find OpenRA.GameMonitor/ -iname '*.cs')
|
||||||
crashdialog_TARGET = OpenRA.CrashDialog.exe
|
gamemonitor_TARGET = OpenRA.exe
|
||||||
crashdialog_KIND = exe
|
gamemonitor_KIND = winexe
|
||||||
crashdialog_DEPS = $(game_TARGET)
|
gamemonitor_DEPS = $(game_TARGET)
|
||||||
crashdialog_LIBS = $(COMMON_LIBS) $(crashdialog_DEPS) System.Windows.Forms.dll
|
gamemonitor_LIBS = $(COMMON_LIBS) $(gamemonitor_DEPS) System.Windows.Forms.dll
|
||||||
crashdialog_FLAGS = -win32icon:OpenRA.Game/OpenRA.ico
|
gamemonitor_FLAGS = -win32icon:OpenRA.Game/OpenRA.ico
|
||||||
PROGRAMS += crashdialog
|
PROGRAMS += gamemonitor
|
||||||
crashdialog: $(crashdialog_TARGET)
|
gamemonitor: $(gamemonitor_TARGET)
|
||||||
|
|
||||||
# Backend for the launcher apps - queries game/mod info and applies actions to an install
|
# Backend for the launcher apps - queries game/mod info and applies actions to an install
|
||||||
utility_SRCS := $(shell find OpenRA.Utility/ -iname '*.cs')
|
utility_SRCS := $(shell find OpenRA.Utility/ -iname '*.cs')
|
||||||
@@ -257,9 +256,9 @@ default: cli-dependencies core
|
|||||||
|
|
||||||
core: game renderers mods utility ralint
|
core: game renderers mods utility ralint
|
||||||
|
|
||||||
tools: editor tsbuild crashdialog
|
tools: editor tsbuild gamemonitor
|
||||||
|
|
||||||
package: dependencies core editor crashdialog docs version
|
package: dependencies core editor gamemonitor docs version
|
||||||
|
|
||||||
mods: mod_common mod_ra mod_cnc mod_d2k mod_ts
|
mods: mod_common mod_ra mod_cnc mod_d2k mod_ts
|
||||||
|
|
||||||
@@ -344,6 +343,7 @@ install-tools: tools
|
|||||||
@-echo "Installing OpenRA tools to $(DATA_INSTALL_DIR)"
|
@-echo "Installing OpenRA tools to $(DATA_INSTALL_DIR)"
|
||||||
@$(INSTALL_DIR) "$(DATA_INSTALL_DIR)"
|
@$(INSTALL_DIR) "$(DATA_INSTALL_DIR)"
|
||||||
@$(INSTALL_PROGRAM) $(foreach prog,$(TOOLS),$($(prog)_TARGET)) "$(DATA_INSTALL_DIR)"
|
@$(INSTALL_PROGRAM) $(foreach prog,$(TOOLS),$($(prog)_TARGET)) "$(DATA_INSTALL_DIR)"
|
||||||
|
@$(RM) $(DATA_INSTALL_DIR)/OpenRA.TilesetBuilder.exe # TODO: won't work outside the source tree
|
||||||
|
|
||||||
install-linux-icons:
|
install-linux-icons:
|
||||||
@$(INSTALL_DIR) "$(DESTDIR)$(datadir)/icons/"
|
@$(INSTALL_DIR) "$(DESTDIR)$(datadir)/icons/"
|
||||||
@@ -357,7 +357,14 @@ install-linux-desktop:
|
|||||||
install-linux-scripts:
|
install-linux-scripts:
|
||||||
@echo "#!/bin/sh" > openra
|
@echo "#!/bin/sh" > openra
|
||||||
@echo 'cd "$(gameinstalldir)"' >> openra
|
@echo 'cd "$(gameinstalldir)"' >> openra
|
||||||
@echo 'exec mono OpenRA.Game.exe "$$@"' >> openra
|
@echo 'mono OpenRA.Game.exe "$$@"' >> openra
|
||||||
|
@echo 'if [ $$? != 0 ]' >> openra
|
||||||
|
@echo 'then' >> openra
|
||||||
|
@echo 'ZENITY=`which zenity` || echo "OpenRA needs zenity installed to display a graphical error dialog. See ~/.openra. for log files."' >> openra
|
||||||
|
@echo '$$ZENITY --question --title "OpenRA" --text "OpenRA has encountered a fatal error.\nLog Files are available in ~/.openra." --ok-label "Quit" --cancel-label "View FAQ" || xdg-open https://github.com/OpenRA/OpenRA/wiki/FAQ' >> openra
|
||||||
|
@echo 'exit 1' >> openra
|
||||||
|
@echo 'fi' >> openra
|
||||||
|
|
||||||
@$(INSTALL_DIR) "$(BIN_INSTALL_DIR)"
|
@$(INSTALL_DIR) "$(BIN_INSTALL_DIR)"
|
||||||
@$(INSTALL_PROGRAM) -m +rx openra "$(BIN_INSTALL_DIR)"
|
@$(INSTALL_PROGRAM) -m +rx openra "$(BIN_INSTALL_DIR)"
|
||||||
@-$(RM) openra
|
@-$(RM) openra
|
||||||
|
|||||||
@@ -127,48 +127,5 @@ namespace OpenRA
|
|||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ShowFatalErrorDialog()
|
|
||||||
{
|
|
||||||
var process = "OpenRA.CrashDialog.exe";
|
|
||||||
var args = "";
|
|
||||||
|
|
||||||
if (CurrentPlatform == PlatformType.OSX)
|
|
||||||
{
|
|
||||||
// Winforms requires X11 under OSX, which may not exist.
|
|
||||||
// Show a native dialog using applescript instead.
|
|
||||||
var title = "Fatal Error";
|
|
||||||
var logsButton = "View Logs";
|
|
||||||
var faqButton = "View FAQ";
|
|
||||||
var quitButton = "Quit";
|
|
||||||
var message = "OpenRA has encountered a fatal error.\nRefer to the crash logs and FAQ for more information.";
|
|
||||||
|
|
||||||
var faqPath = Game.Settings.Debug.FatalErrorDialogFaq;
|
|
||||||
var logsPath = "file://" + Platform.SupportDir + "Logs" + Path.DirectorySeparatorChar;
|
|
||||||
|
|
||||||
var iconPath = new [] { "./OpenRA.icns", "./packaging/osx/template.app/Contents/Resources/OpenRA.icns" }.FirstOrDefault(f => File.Exists(f));
|
|
||||||
var icon = iconPath != null ? "with icon alias (POSIX file \\\"file://{0}\\\")".F(Environment.CurrentDirectory + "/" + iconPath) : "";
|
|
||||||
|
|
||||||
process = "/usr/bin/osascript";
|
|
||||||
args = (
|
|
||||||
"-e \"repeat\"\n" +
|
|
||||||
"-e \" tell application \\\"Finder\\\"\"\n" +
|
|
||||||
"-e \" set question to display dialog \\\"{1}\\\" with title \\\"{0}\\\" {2} buttons {{\\\"{3}\\\", \\\"{5}\\\", \\\"{7}\\\"}} default button 3\"\n" +
|
|
||||||
"-e \" if button returned of question is equal to \\\"{3}\\\" then open (POSIX file \\\"{4}\\\")\"\n" +
|
|
||||||
"-e \" if button returned of question is equal to \\\"{5}\\\" then open location \\\"{6}\\\"\"\n" +
|
|
||||||
"-e \" if button returned of question is equal to \\\"{7}\\\" then exit repeat\"\n" +
|
|
||||||
"-e \" activate\"\n" +
|
|
||||||
"-e \" end tell\"\n" +
|
|
||||||
"-e \"end repeat\""
|
|
||||||
).F(title, message, icon, logsButton, logsPath, faqButton, faqPath, quitButton);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CurrentPlatform == PlatformType.Linux)
|
|
||||||
process = "error-dialog.sh";
|
|
||||||
|
|
||||||
var psi = new ProcessStartInfo(process, args);
|
|
||||||
psi.UseShellExecute = false;
|
|
||||||
psi.CreateNoWindow = true;
|
|
||||||
Process.Start(psi);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,9 +72,6 @@ namespace OpenRA
|
|||||||
public bool SanityCheckUnsyncedCode = false;
|
public bool SanityCheckUnsyncedCode = false;
|
||||||
public int Samples = 25;
|
public int Samples = 25;
|
||||||
public bool IgnoreVersionMismatch = false;
|
public bool IgnoreVersionMismatch = false;
|
||||||
|
|
||||||
public bool ShowFatalErrorDialog = true;
|
|
||||||
public string FatalErrorDialogFaq = "http://wiki.openra.net/FAQ";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GraphicSettings
|
public class GraphicSettings
|
||||||
|
|||||||
@@ -60,12 +60,6 @@ namespace OpenRA
|
|||||||
var rpt = BuildExceptionReport(e).ToString();
|
var rpt = BuildExceptionReport(e).ToString();
|
||||||
Log.Write("exception", "{0}", rpt);
|
Log.Write("exception", "{0}", rpt);
|
||||||
Console.Error.WriteLine(rpt);
|
Console.Error.WriteLine(rpt);
|
||||||
|
|
||||||
if (Game.Settings.Debug.ShowFatalErrorDialog && !Game.Settings.Server.Dedicated)
|
|
||||||
{
|
|
||||||
Game.Renderer.Device.Dispose();
|
|
||||||
Platform.ShowFatalErrorDialog();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static StringBuilder BuildExceptionReport(Exception e)
|
static StringBuilder BuildExceptionReport(Exception e)
|
||||||
|
|||||||
@@ -9,23 +9,45 @@
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.IO;
|
|
||||||
using System.Media;
|
using System.Media;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace OpenRA.CrashDialog
|
namespace OpenRA
|
||||||
{
|
{
|
||||||
class FatalErrorDialog
|
class GameMonitor
|
||||||
{
|
{
|
||||||
static Settings settings;
|
static string processName = "OpenRA.Game.exe";
|
||||||
|
static Process gameProcess;
|
||||||
|
|
||||||
[STAThread]
|
[STAThread]
|
||||||
public static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
settings = new Settings(Platform.ResolvePath("^", "settings.yaml"), new Arguments());
|
var psi = new ProcessStartInfo(processName, string.Join(" ", args));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
gameProcess = Process.Start(psi);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gameProcess == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
gameProcess.EnableRaisingEvents = true;
|
||||||
|
gameProcess.Exited += GameProcessExited;
|
||||||
|
|
||||||
|
Application.Run();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ShowErrorDialog()
|
||||||
|
{
|
||||||
var form = new Form
|
var form = new Form
|
||||||
{
|
{
|
||||||
Size = new Size(315, 140),
|
Size = new Size(315, 140),
|
||||||
@@ -34,6 +56,7 @@ namespace OpenRA.CrashDialog
|
|||||||
MaximizeBox = false,
|
MaximizeBox = false,
|
||||||
FormBorderStyle = FormBorderStyle.FixedDialog,
|
FormBorderStyle = FormBorderStyle.FixedDialog,
|
||||||
StartPosition = FormStartPosition.CenterScreen,
|
StartPosition = FormStartPosition.CenterScreen,
|
||||||
|
TopLevel = true,
|
||||||
Icon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location)
|
Icon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location)
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -44,69 +67,78 @@ namespace OpenRA.CrashDialog
|
|||||||
Text = "OpenRA has encountered a fatal error and must close.{0}Refer to the crash logs and FAQ for more information.".F(Environment.NewLine),
|
Text = "OpenRA has encountered a fatal error and must close.{0}Refer to the crash logs and FAQ for more information.".F(Environment.NewLine),
|
||||||
TextAlign = ContentAlignment.TopCenter
|
TextAlign = ContentAlignment.TopCenter
|
||||||
};
|
};
|
||||||
form.Controls.Add(notice);
|
|
||||||
|
|
||||||
var dontShowAgain = new CheckBox
|
|
||||||
{
|
|
||||||
Location = new Point(25, 50),
|
|
||||||
AutoSize = true,
|
|
||||||
Text = "Don't show this message again",
|
|
||||||
};
|
|
||||||
form.Controls.Add(dontShowAgain);
|
|
||||||
|
|
||||||
var viewLogs = new Button
|
var viewLogs = new Button
|
||||||
{
|
{
|
||||||
Location = new Point(10, 80),
|
Location = new Point(10, 80),
|
||||||
Size = new Size(75, 23),
|
Size = new Size(75, 23),
|
||||||
Text = "View Logs"
|
Text = "View Logs"
|
||||||
};
|
};
|
||||||
viewLogs.Click += ViewLogsClicked;
|
|
||||||
form.Controls.Add(viewLogs);
|
|
||||||
|
|
||||||
var viewFaq = new Button
|
var viewFaq = new Button
|
||||||
{
|
{
|
||||||
Location = new Point(90, 80),
|
Location = new Point(90, 80),
|
||||||
Size = new Size(75, 23),
|
Size = new Size(75, 23),
|
||||||
Text = "View FAQ"
|
Text = "View FAQ"
|
||||||
};
|
};
|
||||||
viewFaq.Click += ViewFaqClicked;
|
|
||||||
form.Controls.Add(viewFaq);
|
|
||||||
|
|
||||||
var quit = new Button
|
var quit = new Button
|
||||||
{
|
{
|
||||||
Location = new Point(225, 80),
|
Location = new Point(225, 80),
|
||||||
Size = new Size(75, 23),
|
Size = new Size(75, 23),
|
||||||
Text = "Quit"
|
Text = "Quit",
|
||||||
|
DialogResult = DialogResult.Cancel
|
||||||
};
|
};
|
||||||
quit.DialogResult = DialogResult.Cancel;
|
|
||||||
|
form.Controls.Add(notice);
|
||||||
|
form.Controls.Add(viewLogs);
|
||||||
|
form.Controls.Add(viewFaq);
|
||||||
form.Controls.Add(quit);
|
form.Controls.Add(quit);
|
||||||
|
|
||||||
form.FormClosed += (sender, e) =>
|
viewLogs.Click += ViewLogsClicked;
|
||||||
{
|
viewFaq.Click += ViewFaqClicked;
|
||||||
settings.Debug.ShowFatalErrorDialog = !dontShowAgain.Checked;
|
form.FormClosed += FormClosed;
|
||||||
settings.Save();
|
|
||||||
};
|
|
||||||
|
|
||||||
SystemSounds.Exclamation.Play();
|
SystemSounds.Exclamation.Play();
|
||||||
form.ShowDialog();
|
form.ShowDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void GameProcessExited(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (gameProcess.ExitCode != 0)
|
||||||
|
ShowErrorDialog();
|
||||||
|
|
||||||
|
Exit();
|
||||||
|
}
|
||||||
|
|
||||||
static void ViewLogsClicked(object sender, EventArgs e)
|
static void ViewLogsClicked(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Process.Start(Platform.ResolvePath("^", "Logs"));
|
Process.Start(Platform.ResolvePath("^", "Logs"));
|
||||||
}
|
}
|
||||||
catch { }
|
catch
|
||||||
|
{ }
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ViewFaqClicked(object sender, EventArgs e)
|
static void ViewFaqClicked(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Process.Start(settings.Debug.FatalErrorDialogFaq);
|
Process.Start("http://wiki.openra.net/FAQ");
|
||||||
}
|
}
|
||||||
catch { }
|
catch
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
|
||||||
|
static void FormClosed(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Exit()
|
||||||
|
{
|
||||||
|
Environment.Exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,11 +2,11 @@
|
|||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||||
<ProjectGuid>{47F1B0EE-EB35-47F2-93E4-273C70909157}</ProjectGuid>
|
<ProjectGuid>{68295755-7902-4602-AC2C-9A8AC36D5EF7}</ProjectGuid>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<RootNamespace>OpenRA</RootNamespace>
|
<RootNamespace>OpenRA</RootNamespace>
|
||||||
<AssemblyName>OpenRA.CrashDialog</AssemblyName>
|
<AssemblyName>OpenRA</AssemblyName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Program.cs" />
|
<Compile Include="GameMonitor.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||||
</Project>
|
</Project>
|
||||||
@@ -466,7 +466,6 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
BindCheckboxPref(panel, "PERFGRAPH_CHECKBOX", ds, "PerfGraph");
|
BindCheckboxPref(panel, "PERFGRAPH_CHECKBOX", ds, "PerfGraph");
|
||||||
BindCheckboxPref(panel, "CHECKUNSYNCED_CHECKBOX", ds, "SanityCheckUnsyncedCode");
|
BindCheckboxPref(panel, "CHECKUNSYNCED_CHECKBOX", ds, "SanityCheckUnsyncedCode");
|
||||||
BindCheckboxPref(panel, "BOTDEBUG_CHECKBOX", ds, "BotDebug");
|
BindCheckboxPref(panel, "BOTDEBUG_CHECKBOX", ds, "BotDebug");
|
||||||
BindCheckboxPref(panel, "CRASH_DIALOG_CHECKBOX", ds, "ShowFatalErrorDialog");
|
|
||||||
BindCheckboxPref(panel, "FETCH_NEWS_CHECKBOX", gs, "FetchNews");
|
BindCheckboxPref(panel, "FETCH_NEWS_CHECKBOX", gs, "FetchNews");
|
||||||
|
|
||||||
return () => { };
|
return () => { };
|
||||||
@@ -487,7 +486,6 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
ds.PerfGraph = dds.PerfGraph;
|
ds.PerfGraph = dds.PerfGraph;
|
||||||
ds.SanityCheckUnsyncedCode = dds.SanityCheckUnsyncedCode;
|
ds.SanityCheckUnsyncedCode = dds.SanityCheckUnsyncedCode;
|
||||||
ds.BotDebug = dds.BotDebug;
|
ds.BotDebug = dds.BotDebug;
|
||||||
ds.ShowFatalErrorDialog = dds.ShowFatalErrorDialog;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "System Lua scripts", "Syste
|
|||||||
lua\stacktraceplus.lua = lua\stacktraceplus.lua
|
lua\stacktraceplus.lua = lua\stacktraceplus.lua
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.CrashDialog", "OpenRA.CrashDialog\OpenRA.CrashDialog.csproj", "{47F1B0EE-EB35-47F2-93E4-273C70909157}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.GameMonitor", "OpenRA.GameMonitor\OpenRA.GameMonitor.csproj", "{68295755-7902-4602-AC2C-9A8AC36D5EF7}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
@@ -102,8 +102,8 @@ Global
|
|||||||
{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Debug|x86.Build.0 = Debug|x86
|
{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Debug|x86.Build.0 = Debug|x86
|
||||||
{33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.ActiveCfg = Debug|x86
|
{33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.Build.0 = Debug|x86
|
{33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.Build.0 = Debug|x86
|
||||||
{47F1B0EE-EB35-47F2-93E4-273C70909157}.Debug|x86.ActiveCfg = Debug|x86
|
{68295755-7902-4602-AC2C-9A8AC36D5EF7}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{47F1B0EE-EB35-47F2-93E4-273C70909157}.Debug|x86.Build.0 = Debug|x86
|
{68295755-7902-4602-AC2C-9A8AC36D5EF7}.Debug|x86.Build.0 = Debug|x86
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
ZENITY=`which zenity` || echo "OpenRA needs zenity installed to display a graphical error dialog. See ~/.openra. for log files."
|
|
||||||
$ZENITY --question --title "OpenRA" --text "OpenRA has encountered a fatal error.\nLog Files are available in ~/.openra." --ok-label "Quit" --cancel-label "View FAQ" || xdg-open https://github.com/OpenRA/OpenRA/wiki/FAQ
|
|
||||||
@@ -1,3 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# launch script (executed by Desura)
|
# launch script (executed by Desura)
|
||||||
exec mono OpenRA.Game.exe Server.Dedicated=False Server.DedicatedLoop=False "$@"
|
mono OpenRA.Game.exe Server.Dedicated=False Server.DedicatedLoop=False "$@"
|
||||||
|
if [ $? != 0 ]
|
||||||
|
then
|
||||||
|
ZENITY=`which zenity` || echo "OpenRA needs zenity installed to display a graphical error dialog. See ~/.openra. for log files."
|
||||||
|
$ZENITY --question --title "OpenRA" --text "OpenRA has encountered a fatal error.\nLog Files are available in ~/.openra." --ok-label "Quit" --cancel-label "View FAQ" || xdg-open https://github.com/OpenRA/OpenRA/wiki/FAQ
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -437,13 +437,6 @@ Container@SETTINGS_PANEL:
|
|||||||
Height: 20
|
Height: 20
|
||||||
Font: Regular
|
Font: Regular
|
||||||
Text: Enable Network Discovery (UPnP)
|
Text: Enable Network Discovery (UPnP)
|
||||||
Checkbox@CRASH_DIALOG_CHECKBOX:
|
|
||||||
X: 310
|
|
||||||
Y: 40
|
|
||||||
Width: 300
|
|
||||||
Height: 20
|
|
||||||
Font: Regular
|
|
||||||
Text: Show Fatal Error dialog
|
|
||||||
Checkbox@PERFTEXT_CHECKBOX:
|
Checkbox@PERFTEXT_CHECKBOX:
|
||||||
X: 15
|
X: 15
|
||||||
Y: 70
|
Y: 70
|
||||||
@@ -451,6 +444,13 @@ Container@SETTINGS_PANEL:
|
|||||||
Height: 20
|
Height: 20
|
||||||
Font: Regular
|
Font: Regular
|
||||||
Text: Show Performance Text
|
Text: Show Performance Text
|
||||||
|
Checkbox@FETCH_NEWS_CHECKBOX:
|
||||||
|
X: 310
|
||||||
|
Y: 40
|
||||||
|
Width: 300
|
||||||
|
Height: 20
|
||||||
|
Font: Regular
|
||||||
|
Text: Fetch Community News
|
||||||
Checkbox@PERFGRAPH_CHECKBOX:
|
Checkbox@PERFGRAPH_CHECKBOX:
|
||||||
X: 310
|
X: 310
|
||||||
Y: 70
|
Y: 70
|
||||||
@@ -458,13 +458,6 @@ Container@SETTINGS_PANEL:
|
|||||||
Height: 20
|
Height: 20
|
||||||
Font: Regular
|
Font: Regular
|
||||||
Text: Show Performance Graph
|
Text: Show Performance Graph
|
||||||
Checkbox@FETCH_NEWS_CHECKBOX:
|
|
||||||
X: 15
|
|
||||||
Y: 100
|
|
||||||
Width: 300
|
|
||||||
Height: 20
|
|
||||||
Font: Regular
|
|
||||||
Text: Fetch Community News
|
|
||||||
Label@DEBUG_TITLE:
|
Label@DEBUG_TITLE:
|
||||||
Y: 140
|
Y: 140
|
||||||
Width: PARENT_RIGHT
|
Width: PARENT_RIGHT
|
||||||
|
|||||||
@@ -438,13 +438,6 @@ Background@SETTINGS_PANEL:
|
|||||||
Height: 20
|
Height: 20
|
||||||
Font: Regular
|
Font: Regular
|
||||||
Text: Enable Network Discovery (UPnP)
|
Text: Enable Network Discovery (UPnP)
|
||||||
Checkbox@CRASH_DIALOG_CHECKBOX:
|
|
||||||
X: 310
|
|
||||||
Y: 40
|
|
||||||
Width: 300
|
|
||||||
Height: 20
|
|
||||||
Font: Regular
|
|
||||||
Text: Show Fatal Error dialog
|
|
||||||
Checkbox@PERFTEXT_CHECKBOX:
|
Checkbox@PERFTEXT_CHECKBOX:
|
||||||
X: 15
|
X: 15
|
||||||
Y: 70
|
Y: 70
|
||||||
@@ -452,6 +445,13 @@ Background@SETTINGS_PANEL:
|
|||||||
Height: 20
|
Height: 20
|
||||||
Font: Regular
|
Font: Regular
|
||||||
Text: Show Performance Text
|
Text: Show Performance Text
|
||||||
|
Checkbox@FETCH_NEWS_CHECKBOX:
|
||||||
|
X: 310
|
||||||
|
Y: 40
|
||||||
|
Width: 300
|
||||||
|
Height: 20
|
||||||
|
Font: Regular
|
||||||
|
Text: Fetch Community News
|
||||||
Checkbox@PERFGRAPH_CHECKBOX:
|
Checkbox@PERFGRAPH_CHECKBOX:
|
||||||
X: 310
|
X: 310
|
||||||
Y: 70
|
Y: 70
|
||||||
@@ -459,13 +459,6 @@ Background@SETTINGS_PANEL:
|
|||||||
Height: 20
|
Height: 20
|
||||||
Font: Regular
|
Font: Regular
|
||||||
Text: Show Performance Graph
|
Text: Show Performance Graph
|
||||||
Checkbox@FETCH_NEWS_CHECKBOX:
|
|
||||||
X: 15
|
|
||||||
Y: 100
|
|
||||||
Width: 300
|
|
||||||
Height: 20
|
|
||||||
Font: Regular
|
|
||||||
Text: Fetch Community News
|
|
||||||
Label@DEBUG_TITLE:
|
Label@DEBUG_TITLE:
|
||||||
Y: 140
|
Y: 140
|
||||||
Width: PARENT_RIGHT
|
Width: PARENT_RIGHT
|
||||||
|
|||||||
@@ -26,12 +26,6 @@ cp $DEPSDIR/* $PWD/packaging/linux/$ROOTDIR/usr/lib/openra/
|
|||||||
# Install startup scripts, desktop files and icons
|
# Install startup scripts, desktop files and icons
|
||||||
make install-linux-shortcuts prefix="/usr" DESTDIR="$PWD/packaging/linux/$ROOTDIR"
|
make install-linux-shortcuts prefix="/usr" DESTDIR="$PWD/packaging/linux/$ROOTDIR"
|
||||||
|
|
||||||
# Remove the WinForms dialog which is replaced with a native one provided by zenity
|
|
||||||
rm $PWD/packaging/linux/$ROOTDIR/usr/lib/openra/OpenRA.CrashDialog.exe
|
|
||||||
|
|
||||||
# Remove the WinForms tileset builder which does not work outside the source tree
|
|
||||||
rm $PWD/packaging/linux/$ROOTDIR/usr/lib/openra/OpenRA.TilesetBuilder.exe
|
|
||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
mkdir -p $PWD/packaging/linux/$ROOTDIR/usr/share/doc/openra/
|
mkdir -p $PWD/packaging/linux/$ROOTDIR/usr/share/doc/openra/
|
||||||
cp *.html $PWD/packaging/linux/$ROOTDIR/usr/share/doc/openra/
|
cp *.html $PWD/packaging/linux/$ROOTDIR/usr/share/doc/openra/
|
||||||
|
|||||||
@@ -18,9 +18,10 @@ cp -rv $2/* $3/* "OpenRA.app/Contents/Resources/" || exit 3
|
|||||||
|
|
||||||
# Remove unused icon
|
# Remove unused icon
|
||||||
rm OpenRA.app/Contents/Resources/OpenRA.ico
|
rm OpenRA.app/Contents/Resources/OpenRA.ico
|
||||||
|
|
||||||
# Remove broken WinForms applications
|
# Remove broken WinForms applications
|
||||||
|
rm OpenRA.app/Contents/Resources/OpenRA.exe
|
||||||
rm OpenRA.app/Contents/Resources/OpenRA.Editor.exe
|
rm OpenRA.app/Contents/Resources/OpenRA.Editor.exe
|
||||||
rm OpenRA.app/Contents/Resources/OpenRA.CrashDialog.exe
|
|
||||||
|
|
||||||
# Set version string
|
# Set version string
|
||||||
sed "s/{DEV_VERSION}/${1}/" OpenRA.app/Contents/Info.plist.template > OpenRA.app/Contents/Info.plist
|
sed "s/{DEV_VERSION}/${1}/" OpenRA.app/Contents/Info.plist.template > OpenRA.app/Contents/Info.plist
|
||||||
|
|||||||
@@ -14,6 +14,10 @@ TITLE="Cannot launch OpenRA"
|
|||||||
MESSAGE="OpenRA requires Mono $REQUIRED_MAJOR.$REQUIRED_MINOR or later. Please install the Mono MRE package and try again."
|
MESSAGE="OpenRA requires Mono $REQUIRED_MAJOR.$REQUIRED_MINOR or later. Please install the Mono MRE package and try again."
|
||||||
MONO_URL="http://www.mono-project.com/download/"
|
MONO_URL="http://www.mono-project.com/download/"
|
||||||
|
|
||||||
|
CRASH_TITLE="Fatal Error"
|
||||||
|
CRASH_MESSAGE="OpenRA has encountered a fatal error.\nRefer to the crash logs and FAQ for more information."
|
||||||
|
FAQ_URL="http://wiki.openra.net/FAQ"
|
||||||
|
|
||||||
DIR=$(cd "$(dirname "$0")"; pwd)
|
DIR=$(cd "$(dirname "$0")"; pwd)
|
||||||
RESOURCES="$DIR/../Resources"
|
RESOURCES="$DIR/../Resources"
|
||||||
|
|
||||||
@@ -35,4 +39,23 @@ then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Override fontconfig with our own dummy config that prevents long cache delays
|
# Override fontconfig with our own dummy config that prevents long cache delays
|
||||||
cd "$RESOURCES" && FONTCONFIG_PATH="." $MONO_BIN --debug OpenRA.Game.exe Graphics.Renderer=Sdl2
|
cd "$RESOURCES" && FONTCONFIG_PATH="." $MONO_BIN --debug OpenRA.Game.exe Graphics.Renderer=Sdl2
|
||||||
|
|
||||||
|
# Display an error dialog on game crash
|
||||||
|
if [ $? != 0 ]
|
||||||
|
then
|
||||||
|
osascript \
|
||||||
|
-e "set logsPath to ((path to application support folder from user domain) as text) & \"OpenRA:Logs:\"" \
|
||||||
|
-e "log logsPath" \
|
||||||
|
-e "tell application \"Finder\"" \
|
||||||
|
-e " repeat" \
|
||||||
|
-e " set question to display dialog \"$CRASH_MESSAGE\" with title \"$CRASH_TITLE\" with icon alias (POSIX file \"$RESOURCES/OpenRA.icns\") buttons {\"View Logs\", \"View FAQ\", \"Quit\"} default button 3" \
|
||||||
|
-e " if button returned of question is equal to \"View Logs\" then open logsPath" \
|
||||||
|
-e " if button returned of question is equal to \"View FAQ\" then open location \"$FAQ_URL\"" \
|
||||||
|
-e " if button returned of question is equal to \"Quit\" then exit repeat" \
|
||||||
|
-e " if button returned of question is equal to \"Download Mono\" then open location \"$MONO_URL\"" \
|
||||||
|
-e " activate" \
|
||||||
|
-e " end repeat" \
|
||||||
|
-e "end tell"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -30,7 +30,7 @@ markdown DOCUMENTATION.md > DOCUMENTATION.html
|
|||||||
markdown Lua-API.md > Lua-API.html
|
markdown Lua-API.md > Lua-API.html
|
||||||
|
|
||||||
# List of files that are packaged on all platforms
|
# List of files that are packaged on all platforms
|
||||||
FILES=('OpenRA.Game.exe' 'OpenRA.Editor.exe' 'OpenRA.Utility.exe' 'OpenRA.CrashDialog.exe' \
|
FILES=('OpenRA.Game.exe' 'OpenRA.Editor.exe' 'OpenRA.Utility.exe' \
|
||||||
'OpenRA.Renderer.Sdl2.dll' 'OpenRA.Renderer.Null.dll' \
|
'OpenRA.Renderer.Sdl2.dll' 'OpenRA.Renderer.Null.dll' \
|
||||||
'lua' 'glsl' 'mods/common' 'mods/ra' 'mods/cnc' 'mods/d2k' 'mods/modchooser' \
|
'lua' 'glsl' 'mods/common' 'mods/ra' 'mods/cnc' 'mods/d2k' 'mods/modchooser' \
|
||||||
'AUTHORS' 'COPYING' 'README.html' 'CONTRIBUTING.html' 'DOCUMENTATION.html' 'CHANGELOG.html' \
|
'AUTHORS' 'COPYING' 'README.html' 'CONTRIBUTING.html' 'DOCUMENTATION.html' 'CHANGELOG.html' \
|
||||||
@@ -68,6 +68,9 @@ cp thirdparty/RestSharp.dll packaging/built
|
|||||||
# Copy game icon for windows package
|
# Copy game icon for windows package
|
||||||
cp OpenRA.Game/OpenRA.ico packaging/built
|
cp OpenRA.Game/OpenRA.ico packaging/built
|
||||||
|
|
||||||
|
# Copy the Windows crash monitor
|
||||||
|
cp OpenRA.exe packaging/built
|
||||||
|
|
||||||
cd packaging
|
cd packaging
|
||||||
echo "Creating packages..."
|
echo "Creating packages..."
|
||||||
|
|
||||||
|
|||||||
@@ -65,9 +65,9 @@ Section "Game" GAME
|
|||||||
File /r "${SRCDIR}\mods\modchooser"
|
File /r "${SRCDIR}\mods\modchooser"
|
||||||
|
|
||||||
SetOutPath "$INSTDIR"
|
SetOutPath "$INSTDIR"
|
||||||
|
File "${SRCDIR}\OpenRA.exe"
|
||||||
File "${SRCDIR}\OpenRA.Game.exe"
|
File "${SRCDIR}\OpenRA.Game.exe"
|
||||||
File "${SRCDIR}\OpenRA.Utility.exe"
|
File "${SRCDIR}\OpenRA.Utility.exe"
|
||||||
File "${SRCDIR}\OpenRA.CrashDialog.exe"
|
|
||||||
File "${SRCDIR}\OpenRA.Renderer.Null.dll"
|
File "${SRCDIR}\OpenRA.Renderer.Null.dll"
|
||||||
File "${SRCDIR}\OpenRA.Renderer.Sdl2.dll"
|
File "${SRCDIR}\OpenRA.Renderer.Sdl2.dll"
|
||||||
File "${SRCDIR}\ICSharpCode.SharpZipLib.dll"
|
File "${SRCDIR}\ICSharpCode.SharpZipLib.dll"
|
||||||
@@ -97,8 +97,8 @@ Section "Game" GAME
|
|||||||
|
|
||||||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
||||||
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
|
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
|
||||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\OpenRA.lnk" $OUTDIR\OpenRA.Game.exe "" \
|
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\OpenRA.lnk" $OUTDIR\OpenRA.exe "" \
|
||||||
"$OUTDIR\OpenRA.Game.exe" "" "" "" ""
|
"$OUTDIR\OpenRA.exe" "" "" "" ""
|
||||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\README.lnk" $OUTDIR\README.html "" \
|
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\README.lnk" $OUTDIR\README.html "" \
|
||||||
"$OUTDIR\README.html" "" "" "" ""
|
"$OUTDIR\README.html" "" "" "" ""
|
||||||
!insertmacro MUI_STARTMENU_WRITE_END
|
!insertmacro MUI_STARTMENU_WRITE_END
|
||||||
@@ -125,8 +125,8 @@ SectionEnd
|
|||||||
SectionGroup /e "Settings"
|
SectionGroup /e "Settings"
|
||||||
Section "Desktop Shortcut" DESKTOPSHORTCUT
|
Section "Desktop Shortcut" DESKTOPSHORTCUT
|
||||||
SetOutPath "$INSTDIR"
|
SetOutPath "$INSTDIR"
|
||||||
CreateShortCut "$DESKTOP\OpenRA.lnk" $INSTDIR\OpenRA.Game.exe "" \
|
CreateShortCut "$DESKTOP\OpenRA.lnk" $INSTDIR\OpenRA.exe "" \
|
||||||
"$INSTDIR\OpenRA.Game.exe" "" "" "" ""
|
"$INSTDIR\OpenRA.exe" "" "" "" ""
|
||||||
SectionEnd
|
SectionEnd
|
||||||
SectionGroupEnd
|
SectionGroupEnd
|
||||||
|
|
||||||
@@ -181,10 +181,9 @@ Function ${UN}Clean
|
|||||||
RMDir /r $INSTDIR\maps
|
RMDir /r $INSTDIR\maps
|
||||||
RMDir /r $INSTDIR\glsl
|
RMDir /r $INSTDIR\glsl
|
||||||
RMDir /r $INSTDIR\lua
|
RMDir /r $INSTDIR\lua
|
||||||
Delete $INSTDIR\OpenRA.Launcher.exe
|
Delete $INSTDIR\OpenRA.exe
|
||||||
Delete $INSTDIR\OpenRA.Game.exe
|
Delete $INSTDIR\OpenRA.Game.exe
|
||||||
Delete $INSTDIR\OpenRA.Utility.exe
|
Delete $INSTDIR\OpenRA.Utility.exe
|
||||||
Delete $INSTDIR\OpenRA.CrashDialog.exe
|
|
||||||
Delete $INSTDIR\OpenRA.Editor.exe
|
Delete $INSTDIR\OpenRA.Editor.exe
|
||||||
Delete $INSTDIR\OpenRA.Renderer.Null.dll
|
Delete $INSTDIR\OpenRA.Renderer.Null.dll
|
||||||
Delete $INSTDIR\OpenRA.Renderer.Sdl2.dll
|
Delete $INSTDIR\OpenRA.Renderer.Sdl2.dll
|
||||||
|
|||||||
Reference in New Issue
Block a user