public void OpenFile(string filename, FileSystem fs) { if (fs == null) { if (filename.EndsWith(".rpf")) { fs = new RPFFileSystem(); } else if (filename.EndsWith(".img")) { fs = new IMGFileSystem(); } else if (IODirectory.Exists(filename)) { fs = new RealFileSystem(); filename = (new DirectoryInfo(filename)).FullName; } } if (fs != null) { if (IOFile.Exists(filename)) { FileInfo fi = new FileInfo(filename); if ((fi.Attributes & FileAttributes.ReadOnly) != 0) { DialogResult result = MessageBox.Show("The file you are trying to open appears to be read-only. " + "Would you like to make it writable before opening this file?", "Open", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { fi.Attributes = fi.Attributes & ~FileAttributes.ReadOnly; } } } try { using (new WaitCursor(this)) { fs.Open(filename); if (_fs != null) { _fs.Close(); } _fs = fs; Text = Application.ProductName + " - " + new FileInfo(filename).Name; } PopulateUI(); } catch (Exception ex) { fs.Close(); MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
private void LoadGameDirectory( KeyUtil keyUtil, string gameName ) { using (new WaitCursor(this)) { FileSystem fs = new RealFileSystem(); string gamePath = keyUtil.FindGameDirectory(); while (gamePath == null) { var fbd = new FolderBrowserDialog { Description = "Could not find the " + gameName + " game directory. Please select the directory containing " + keyUtil.ExecutableName, ShowNewFolderButton = false }; if (fbd.ShowDialog() == DialogResult.Cancel) { MessageBox.Show( keyUtil.ExecutableName + " is required to extract cryptographic keys for this program to function. " + "SparkIV can not run without this file.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (System.IO.File.Exists(Path.Combine(fbd.SelectedPath, keyUtil.ExecutableName))) { gamePath = fbd.SelectedPath; } } byte[] key = keyUtil.FindKey( gamePath, gameName ); if (key == null) { string message = "Your " + keyUtil.ExecutableName + " seems to be modified or is a newer version than this tool supports. " + "SparkIV can not run without a supported " + keyUtil.ExecutableName + " file." + "\n" + "Would you like to check for updates?"; string caption = "Newer or Modified " + keyUtil.ExecutableName; if (MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes) { Updater.CheckForUpdate(); } return; } KeyStore.SetKeyLoader(() => key); fs.Open(gamePath); if (_fs != null) { _fs.Close(); } _fs = fs; Text = Application.ProductName + " - Browse Game Directory"; PopulateUI(); } }