Installing from CD: Volume names / mount points are unreliable identifiers - check for specific files on the disk instead.

This commit is contained in:
Paul Chote
2011-07-23 16:12:08 +12:00
parent a165a80101
commit 22d3e16225
4 changed files with 18 additions and 7 deletions

View File

@@ -49,7 +49,11 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
void CheckForDisk()
{
var path = InstallUtils.GetMountedDisk(new [] { "GDI95", "NOD95" });
Func<string, bool> ValidDiskFilter = diskRoot => File.Exists(diskRoot+Path.DirectorySeparatorChar+"CONQUER.MIX") &&
File.Exists(diskRoot+Path.DirectorySeparatorChar+"DESERT.MIX") &&
File.Exists(new string[] { diskRoot, "INSTALL", "SETUP.Z" }.Aggregate(Path.Combine));
var path = InstallUtils.GetMountedDisk(ValidDiskFilter);
if (path != null)
Install(path);

View File

@@ -66,7 +66,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
var installButton = panel.GetWidget<ButtonWidget>("INSTALL_BUTTON");
installButton.OnClick = () =>
Widget.OpenWindow("INSTALL_MUSIC_PANEL", new WidgetArgs() {{ "afterInstall", afterInstall }});
installButton.IsVisible = () => music.Length < 2; // Hack around ra shipping (only) hellmarch by default
installButton.IsVisible = () => music.Length < 3; // Hack around music being split between transit.mix and scores.mix
panel.GetWidget("NO_MUSIC_LABEL").IsVisible = noMusic;
@@ -216,7 +216,11 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
void CheckForDisk()
{
var path = InstallUtils.GetMountedDisk(new [] { "GDI95", "NOD95" });
Func<string, bool> ValidDiskFilter = diskRoot => File.Exists(diskRoot+Path.DirectorySeparatorChar+"CONQUER.MIX") &&
File.Exists(diskRoot+Path.DirectorySeparatorChar+"DESERT.MIX") &&
File.Exists(new string[] { diskRoot, "INSTALL", "SETUP.Z" }.Aggregate(Path.Combine));
var path = InstallUtils.GetMountedDisk(ValidDiskFilter);
if (path != null)
Install(path);