Skip to content

Commit a670e81

Browse files
authored
Merge pull request #6 from FlashpointProject/dev
Dev
2 parents 40f35b7 + 113780d commit a670e81

File tree

7 files changed

+91
-92
lines changed

7 files changed

+91
-92
lines changed

FlashpointSecurePlayer/FlashpointSecurePlayer.cs

Lines changed: 58 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,25 @@
1818
namespace FlashpointSecurePlayer {
1919
public partial class FlashpointSecurePlayer : Form {
2020
private const string APPLICATION_MUTEX_NAME = "Flashpoint Secure Player";
21+
private const string EMPTY_MODE_NAME = "";
2122
private const string FLASHPOINT_LAUNCHER_PARENT_PROCESS_EXE_FILE_NAME = "cmd.exe";
2223
private const string FLASHPOINT_LAUNCHER_PROCESS_NAME = "flashpoint";
24+
private Mutex ApplicationMutex = null;
2325
private static SemaphoreSlim ModificationsSemaphoreSlim = new SemaphoreSlim(1, 1);
2426
private readonly RunAsAdministrator RunAsAdministrator;
2527
private readonly ModeTemplates ModeTemplates;
2628
private readonly EnvironmentVariables EnvironmentVariables;
2729
private readonly DownloadsBefore DownloadsBefore;
2830
private readonly RegistryBackups RegistryBackup;
2931
private readonly SingleInstance SingleInstance;
30-
string ModificationsName = ACTIVE_EXE_CONFIGURATION_NAME;
31-
bool RunAsAdministratorModification = false;
32-
List<string> DownloadsBeforeModificationNames = null;
33-
bool ActiveX = false;
34-
string Server = null;
35-
string Software = null;
36-
ProcessStartInfo SoftwareProcessStartInfo = null;
37-
public delegate void ErrorDelegate(string text);
32+
private string ModificationsName = ACTIVE_EXE_CONFIGURATION_NAME;
33+
private bool RunAsAdministratorModification = false;
34+
private List<string> DownloadsBeforeModificationNames = null;
35+
private bool ActiveX = false;
36+
private string Server = EMPTY_MODE_NAME;
37+
private string Software = EMPTY_MODE_NAME;
38+
private ProcessStartInfo SoftwareProcessStartInfo = null;
39+
private delegate void ErrorDelegate(string text);
3840

3941
public FlashpointSecurePlayer() {
4042
InitializeComponent();
@@ -314,7 +316,7 @@ private async Task StartSecurePlayback() {
314316
ShowError(Properties.Resources.GameNotActiveXControl);
315317
return;
316318
}
317-
319+
318320
GetBinaryType(ModificationsName, out BINARY_TYPE binaryType);
319321

320322
// first, we install the control without a registry backup running
@@ -404,33 +406,7 @@ private async Task StartSecurePlayback() {
404406
securePlaybackProgressBar.Value = 100;
405407
ShowOutput(Properties.Resources.RegistryBackupWasSuccessful);
406408
return;
407-
} else if (!String.IsNullOrEmpty(Server)) {
408-
// switch to server form
409-
ResetProgressBar();
410-
ShowOutput(Properties.Resources.RequiredComponentsAreLoading);
411-
412-
try {
413-
await ActivateModificationsAsync(null, delegate (string text) {
414-
if (text.IndexOf("\n") == -1) {
415-
ShowError(text);
416-
} else {
417-
ShowError();
418-
MessageBox.Show(text, Properties.Resources.FlashpointSecurePlayer, MessageBoxButtons.OK, MessageBoxIcon.Error);
419-
}
420-
421-
throw new InvalidModificationException();
422-
}).ConfigureAwait(true);
423-
} catch (InvalidModificationException) {
424-
return;
425-
}
426-
427-
Server serverForm = new Server(new Uri(Server));
428-
429-
securePlaybackProgressBar.Value = 100;
430-
Hide();
431-
serverForm.Show();
432-
return;
433-
} else if (!String.IsNullOrEmpty(Software)) {
409+
} else {
434410
// switch to synced process
435411
ResetProgressBar();
436412
ShowOutput(Properties.Resources.RequiredComponentsAreLoading);
@@ -450,50 +426,60 @@ await ActivateModificationsAsync(Software, delegate (string text) {
450426
return;
451427
}
452428

453-
securePlaybackProgressBar.Value = 50;
429+
if (!String.IsNullOrEmpty(Server)) {
430+
securePlaybackProgressBar.Value = 50;
431+
Server serverForm = new Server(new Uri(Server));
454432

455-
try {
456-
// default to zero in case of error
457-
int argc = 0;
458-
string[] argv = CommandLineToArgv(Software, out argc);
433+
securePlaybackProgressBar.Value = 100;
434+
Hide();
435+
serverForm.Show();
436+
return;
437+
} else if (!String.IsNullOrEmpty(Software)) {
438+
securePlaybackProgressBar.Value = 50;
459439

460-
if (SoftwareProcessStartInfo == null) {
461-
SoftwareProcessStartInfo = new ProcessStartInfo();
462-
}
440+
try {
441+
// default to zero in case of error
442+
int argc = 0;
443+
string[] argv = CommandLineToArgv(Software, out argc);
463444

464-
SoftwareProcessStartInfo.FileName = Path.GetFullPath(argv[0]);
465-
SoftwareProcessStartInfo.Arguments = GetCommandLineArgumentRange(Software, 1, -1);
466-
SoftwareProcessStartInfo.ErrorDialog = false;
467-
SoftwareProcessStartInfo.WorkingDirectory = Path.GetDirectoryName(Path.GetFullPath(argv[0]));
445+
if (SoftwareProcessStartInfo == null) {
446+
SoftwareProcessStartInfo = new ProcessStartInfo();
447+
}
468448

469-
Process process = Process.Start(SoftwareProcessStartInfo);
449+
SoftwareProcessStartInfo.FileName = Path.GetFullPath(argv[0]);
450+
SoftwareProcessStartInfo.Arguments = GetCommandLineArgumentRange(Software, 1, -1);
451+
SoftwareProcessStartInfo.ErrorDialog = false;
452+
SoftwareProcessStartInfo.WorkingDirectory = Path.GetDirectoryName(Path.GetFullPath(argv[0]));
470453

471-
try {
472-
ProcessSync.Start(process);
473-
} catch (JobObjectException) {
474-
// popup message box and blow up
475-
ShowError();
476-
MessageBox.Show(Properties.Resources.JobObjectNotCreated, Properties.Resources.FlashpointSecurePlayer, MessageBoxButtons.OK, MessageBoxIcon.Error);
477-
process.Kill();
478-
Environment.Exit(-1);
479-
return;
480-
}
454+
Process process = Process.Start(SoftwareProcessStartInfo);
481455

482-
securePlaybackProgressBar.Value = 100;
483-
Hide();
456+
try {
457+
ProcessSync.Start(process);
458+
} catch (JobObjectException) {
459+
// popup message box and blow up
460+
ShowError();
461+
MessageBox.Show(Properties.Resources.JobObjectNotCreated, Properties.Resources.FlashpointSecurePlayer, MessageBoxButtons.OK, MessageBoxIcon.Error);
462+
process.Kill();
463+
Environment.Exit(-1);
464+
return;
465+
}
484466

485-
if (!process.HasExited) {
486-
process.WaitForExit();
487-
}
467+
securePlaybackProgressBar.Value = 100;
468+
Hide();
488469

489-
Application.Exit();
490-
} catch {
491-
Show();
492-
ShowError();
493-
MessageBox.Show(Properties.Resources.ProcessFailedStart, Properties.Resources.FlashpointSecurePlayer, MessageBoxButtons.OK, MessageBoxIcon.Error);
494-
Application.Exit();
470+
if (!process.HasExited) {
471+
process.WaitForExit();
472+
}
473+
474+
Application.Exit();
475+
} catch {
476+
Show();
477+
ShowError();
478+
MessageBox.Show(Properties.Resources.ProcessFailedStart, Properties.Resources.FlashpointSecurePlayer, MessageBoxButtons.OK, MessageBoxIcon.Error);
479+
Application.Exit();
480+
}
481+
return;
495482
}
496-
return;
497483
}
498484
throw new InvalidCurationException();
499485
}
@@ -515,7 +501,7 @@ private async void FlashpointSecurePlayer_Load(object sender, EventArgs e) {
515501
// default to false in case of error
516502
bool createdNew = false;
517503
// signals the Mutex if it has not been
518-
Mutex flashpointSecurePlayerMutex = new Mutex(true, APPLICATION_MUTEX_NAME, out createdNew);
504+
ApplicationMutex = new Mutex(true, APPLICATION_MUTEX_NAME, out createdNew);
519505

520506
if (!createdNew) {
521507
// multiple instances open, blow up immediately

FlashpointSecurePlayer/FlashpointSecurePlayerConfigs/3dgroovegx.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<modeTemplates>
1111
<softwareModeTemplate>
1212
<regexes>
13-
<regex name="(.+)" replace="3DGrooveGX\GroovePlayer.exe $1" />
13+
<regex name="^" replace="3DGrooveGX\GroovePlayer.exe" />
1414
</regexes>
1515
</softwareModeTemplate>
1616
</modeTemplates>

FlashpointSecurePlayer/FlashpointSecurePlayerConfigs/hypercosm.config

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,20 @@
66

77
<flashpointSecurePlayer>
88
<modifications>
9-
<modification name="hypercosm">
9+
<modification name="hypercosm" runAsAdministrator="true">
1010
<modeTemplates>
1111
<softwareModeTemplate>
1212
<regexes>
13-
<regex name="^(\s*&quot;?)(.+)$" replace="$1..\..\..\Server\htdocs\$2" />
13+
<regex name="^(\s*&quot;?)http://(.+)$" replace="$1..\..\..\Server\htdocs\$2" />
1414
<regex name="(.+)" replace="Hypercosm\components\Hypercosm3D5E449320.exe $1" />
1515
</regexes>
1616
</softwareModeTemplate>
1717
</modeTemplates>
18+
<registryBackups binaryType="SCS_32BIT_BINARY">
19+
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\Software\Hypercosm\Hypercosm Player"
20+
valueName="SystemDataPath" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\Hypercosm"
21+
valueKind="String" />
22+
</registryBackups>
1823
</modification>
1924
</modifications>
2025
</flashpointSecurePlayer>

FlashpointSecurePlayer/FlashpointSecurePlayerConfigs/viscape.config

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,33 @@
66
<flashpointSecurePlayer>
77
<modifications>
88
<modification name="viscape">
9+
<modeTemplates>
10+
<softwareModeTemplate>
11+
<regexes>
12+
<regex name="(.+)" replace="Basilisk-Portable\Basilisk-Portable.exe $1" />
13+
</regexes>
14+
</softwareModeTemplate>
15+
</modeTemplates>
916
<registryBackups binaryType="SCS_32BIT_BINARY">
1017
<registryBackup type="VALUE" keyName="HKEY_CURRENT_USER\Software\Superscape\Superscape Viscape\Preferences"
1118
valueName="Name" value="FP" valueKind="String" />
1219
<registryBackup type="VALUE" keyName="HKEY_CURRENT_USER\Software\Superscape\Superscape Viscape\Preferences"
1320
valueName="Company" value="FP" valueKind="String" />
1421
<registryBackup type="VALUE" keyName="HKEY_CURRENT_USER\Software\Superscape\Superscape Viscape\Preferences"
15-
valueName="Path" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\Viscape\SVR" valueKind="String" />
22+
valueName="Path" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\SVR" valueKind="String" />
1623
<registryBackup type="VALUE" keyName="HKEY_CURRENT_USER\Software\Superscape\Superscape Viscape\Preferences"
17-
valueName="TempDir" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\Viscape\SVR\Temp" valueKind="String" />
24+
valueName="TempDir" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\SVR\Temp" valueKind="String" />
1825
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\TYPELIB\{96D94336-BF1E-11D1-8322-0020AF998C79}\1.0"
1926
valueName="" value="Superscape Viscape NavBar Control" valueKind="String" />
2027
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\TYPELIB\{96D94336-BF1E-11D1-8322-0020AF998C79}\1.0\FLAGS"
2128
valueName="" value="2" valueKind="String" />
2229
<registryBackup type="KEY" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\TYPELIB\{96D94336-BF1E-11D1-8322-0020AF998C79}\1.0\0"
2330
valueName="" />
2431
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\TYPELIB\{96D94336-BF1E-11D1-8322-0020AF998C79}\1.0\0\WIN32"
25-
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\Viscape\SVR\Navbar.ocx"
32+
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\SVR\Navbar.ocx"
2633
valueKind="String" />
2734
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\TYPELIB\{96D94336-BF1E-11D1-8322-0020AF998C79}\1.0\HELPDIR"
28-
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\Viscape\SVR"
35+
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\SVR"
2936
valueKind="String" />
3037
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\INTERFACE\{96D94337-BF1E-11D1-8322-0020AF998C79}"
3138
valueName="" value="ISuperscapeViscapeNavBarControl" valueKind="String" />
@@ -52,7 +59,7 @@
5259
valueName="" value="Superscape Viscape NavBar Property Page"
5360
valueKind="String" />
5461
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{96D94339-BF1E-11D1-8322-0020AF998C79}\INPROCSERVER32"
55-
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\Viscape\SVR\Navbar.ocx"
62+
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\SVR\Navbar.ocx"
5663
valueKind="String" />
5764
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{B4DCAF60-A77C-11D1-8322-0020AF998C79}"
5865
valueName="" value="Superscape Viscape NavBar Control" valueKind="String" />
@@ -64,10 +71,10 @@
6471
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{B4DCAF60-A77C-11D1-8322-0020AF998C79}\PROGID"
6572
valueName="" value="Superscape Viscape NavBar Control" valueKind="String" />
6673
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{B4DCAF60-A77C-11D1-8322-0020AF998C79}\INPROCSERVER32"
67-
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\Viscape\SVR\Navbar.ocx"
74+
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\SVR\Navbar.ocx"
6875
valueKind="String" />
6976
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{B4DCAF60-A77C-11D1-8322-0020AF998C79}\TOOLBOXBITMAP32"
70-
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\Viscape\SVR\Navbar.ocx, 1"
77+
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\SVR\Navbar.ocx, 1"
7178
valueKind="String" />
7279
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{B4DCAF60-A77C-11D1-8322-0020AF998C79}\MISCSTATUS"
7380
valueName="" value="0" valueKind="String" />
@@ -89,10 +96,10 @@
8996
<registryBackup type="KEY" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\TYPELIB\{1B487520-BEC2-11CF-BF9E-0020AF998FF5}\1.1\0"
9097
valueName="" />
9198
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\TYPELIB\{1B487520-BEC2-11CF-BF9E-0020AF998FF5}\1.1\0\WIN32"
92-
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\Viscape\SVR\Vrtocx.ocx"
99+
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\SVR\Vrtocx.ocx"
93100
valueKind="String" />
94101
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\TYPELIB\{1B487520-BEC2-11CF-BF9E-0020AF998FF5}\1.1\HELPDIR"
95-
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\Viscape\SVR"
102+
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\SVR"
96103
valueKind="String" />
97104
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{1B487523-BEC2-11CF-BF9E-0020AF998FF5}"
98105
valueName="" value="Superscape Viscape" valueKind="String" />
@@ -104,10 +111,10 @@
104111
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{1B487523-BEC2-11CF-BF9E-0020AF998FF5}\PROGID"
105112
valueName="" value="Virtual_Worlds" valueKind="String" />
106113
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{1B487523-BEC2-11CF-BF9E-0020AF998FF5}\INPROCSERVER32"
107-
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\Viscape\SVR\Vrtocx.ocx"
114+
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\SVR\Vrtocx.ocx"
108115
valueKind="String" />
109116
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{1B487523-BEC2-11CF-BF9E-0020AF998FF5}\TOOLBOXBITMAP32"
110-
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\Viscape\SVR\Vrtocx.ocx, 201"
117+
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\SVR\Vrtocx.ocx, 201"
111118
valueKind="String" />
112119
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{1B487523-BEC2-11CF-BF9E-0020AF998FF5}\MISCSTATUS"
113120
valueName="" value="0" valueKind="String" />
@@ -139,7 +146,7 @@
139146
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{BBED38A0-72D9-11D0-AB39-0020AF71E433}"
140147
valueName="" value="SCL Audio Renderer" valueKind="String" />
141148
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{BBED38A0-72D9-11D0-AB39-0020AF71E433}\INPROCSERVER32"
142-
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\Viscape\SVR\SCLAudio.ax"
149+
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\SVR\SCLAudio.ax"
143150
valueKind="String" />
144151
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{BBED38A0-72D9-11D0-AB39-0020AF71E433}\INPROCSERVER32"
145152
valueName="THREADINGMODEL" value="Both" valueKind="String" />
@@ -170,7 +177,7 @@
170177
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{64302E60-6AD2-11D0-AB39-0020AF71E433}"
171178
valueName="" value="SCL Video Renderer" valueKind="String" />
172179
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{64302E60-6AD2-11D0-AB39-0020AF71E433}\INPROCSERVER32"
173-
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\Viscape\SVR\SCLVideo.ax"
180+
valueName="" value="%FLASHPOINTSECUREPLAYERSTARTUPPATH%\\SVR\SCLVideo.ax"
174181
valueKind="String" />
175182
<registryBackup type="VALUE" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{64302E60-6AD2-11D0-AB39-0020AF71E433}\INPROCSERVER32"
176183
valueName="THREADINGMODEL" value="Both" valueKind="String" />
@@ -199,6 +206,7 @@
199206
<registryBackup type="KEY" keyName="HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{64302E60-6AD2-11D0-AB39-0020AF71E433}\PINS\INPUT\TYPES\{73646976-0000-0010-8000-00AA00389B71}"
200207
valueName="" />
201208
</registryBackups>
209+
<singleInstance strict="false" commandLine="basilisk.exe" />
202210
</modification>
203211
</modifications>
204212
</flashpointSecurePlayer>

0 commit comments

Comments
 (0)