diff --git a/GBM/Forms/frmMain.vb b/GBM/Forms/frmMain.vb index 96547a2..e79afc7 100644 --- a/GBM/Forms/frmMain.vb +++ b/GBM/Forms/frmMain.vb @@ -1,4 +1,5 @@ Imports GBM.My.Resources +Imports System.IO 'Name: frmMain 'Description: Game Backup Monitor Main Screen @@ -45,7 +46,7 @@ Public Class frmMain 'Developer Debug Flags Private bProcessDebugMode As Boolean = False - WithEvents oFileWatcher As New System.IO.FileSystemWatcher + WithEvents oFileWatcher As New FileSystemWatcher WithEvents tmScanTimer As New Timer WithEvents tmRestoreCheck As New Timer @@ -82,7 +83,7 @@ Public Class frmMain Dim sStatus3 As String 'Build Info - sStatus1 = IO.Path.GetFileName(oRestoreInfo.FileName) + sStatus1 = Path.GetFileName(oRestoreInfo.FileName) sStatus2 = mgrCommon.FormatString(frmMain_UpdatedBy, New String() {oRestoreInfo.UpdatedBy, oRestoreInfo.DateUpdated}) If oRestoreInfo.AbsolutePath Then sStatus3 = oRestoreInfo.RestorePath @@ -104,7 +105,7 @@ Public Class frmMain If oGame.AbsolutePath Then sStatus2 = oGame.Path Else - sStatus2 = oGame.ProcessPath & System.IO.Path.DirectorySeparatorChar & oGame.Path + sStatus2 = oGame.ProcessPath & Path.DirectorySeparatorChar & oGame.Path End If sStatus3 = String.Empty @@ -383,6 +384,7 @@ Public Class frmMain Dim bFinished As Boolean = True Dim hshRestore As Hashtable Dim hshGames As Hashtable + Dim oGame As clsGame 'Shut down the timer and bail out if there's nothing to do If slRestoreData.Count = 0 Then @@ -400,7 +402,7 @@ Public Class frmMain 'Check if backup file is ready to restore If oBackup.CheckSum <> String.Empty Then - sFileName = oSettings.BackupFolder & IO.Path.DirectorySeparatorChar & oBackup.FileName + sFileName = oSettings.BackupFolder & Path.DirectorySeparatorChar & oBackup.FileName If mgrHash.Generate_SHA256_Hash(sFileName) <> oBackup.CheckSum Then sNotReady.Add(de.Key) bFinished = False @@ -413,9 +415,17 @@ Public Class frmMain If oBackup.AbsolutePath Then sExtractPath = oBackup.RestorePath Else + hshGames = mgrMonitorList.DoListGetbyName(de.Key) + If hshGames.Count = 1 Then + oGame = DirectCast(hshGames(0), clsGame) + If oGame.ProcessPath <> String.Empty Then + oBackup.RelativeRestorePath = oGame.ProcessPath & Path.DirectorySeparatorChar & oBackup.RestorePath + End If + End If sExtractPath = oBackup.RelativeRestorePath End If - If Not IO.Directory.Exists(sExtractPath) Then + + If Not Directory.Exists(sExtractPath) Then If oSettings.AutoMark Then If mgrManifest.DoGlobalManifestCheck(de.Key, mgrSQLite.Database.Local) Then mgrManifest.DoManifestUpdateByName(de.Value, mgrSQLite.Database.Local) @@ -454,7 +464,8 @@ Public Class frmMain For Each de As DictionaryEntry In slRestoreData hshGames = mgrMonitorList.DoListGetbyName(de.Key) If hshGames.Count = 1 Then - hshRestore.Add(hshGames(0), de.Value) + oGame = DirectCast(hshGames(0), clsGame) + hshRestore.Add(oGame, de.Value) Else UpdateLog(mgrCommon.FormatString(frmMain_AutoRestoreFailure, de.Key), False, ToolTipIcon.Info, True) End If @@ -500,7 +511,7 @@ Public Class frmMain End If Try - fbBrowser.InitialDirectory = IO.Path.GetDirectoryName(oProcess.FoundProcess.MainModule.FileName) + fbBrowser.InitialDirectory = Path.GetDirectoryName(oProcess.FoundProcess.MainModule.FileName) Catch ex As Exception fbBrowser.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) End Try @@ -508,7 +519,7 @@ Public Class frmMain If fbBrowser.ShowDialog() = Windows.Forms.DialogResult.OK Then sIcon = fbBrowser.FileName - If IO.File.Exists(sIcon) Then + If File.Exists(sIcon) Then oProcess.GameInfo.Icon = sIcon pbIcon.Image = Image.FromFile(sIcon) mgrMonitorList.DoListUpdate(oProcess.GameInfo) @@ -599,7 +610,7 @@ Public Class frmMain End Try 'Check for a custom icon & details - If IO.File.Exists(oProcess.GameInfo.Icon) Then + If File.Exists(oProcess.GameInfo.Icon) Then pbIcon.Image = Image.FromFile(oProcess.GameInfo.Icon) End If If sFileName = String.Empty Then @@ -922,7 +933,7 @@ Public Class frmMain If oSettings.Sync Then oFileWatcher.Path = oSettings.BackupFolder oFileWatcher.Filter = "gbm.s3db" - oFileWatcher.NotifyFilter = IO.NotifyFilters.LastWrite + oFileWatcher.NotifyFilter = NotifyFilters.LastWrite End If End Sub @@ -1400,9 +1411,9 @@ Public Class frmMain Dim sSettingsRoot As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "/gbm" Dim sDBLocation As String = sSettingsRoot & "/gbm.s3db" - If Not IO.Directory.Exists(sSettingsRoot) Then + If Not Directory.Exists(sSettingsRoot) Then Try - IO.Directory.CreateDirectory(sSettingsRoot) + Directory.CreateDirectory(sSettingsRoot) Catch ex As Exception mgrCommon.ShowMessage(frmMain_ErrorSettingsFolder, ex.Message, MsgBoxStyle.Critical) bShutdown = True @@ -1410,7 +1421,7 @@ Public Class frmMain End Try End If - If Not IO.File.Exists(sDBLocation) Then bFirstRun = True + If Not File.Exists(sDBLocation) Then bFirstRun = True End Sub Private Sub VerifyDBVersion(ByVal iDB As mgrSQLite.Database) diff --git a/GBM/My Project/Resources.Designer.vb b/GBM/My Project/Resources.Designer.vb index 5c16fdb..953fedb 100644 --- a/GBM/My Project/Resources.Designer.vb +++ b/GBM/My Project/Resources.Designer.vb @@ -2302,7 +2302,7 @@ Namespace My.Resources End Property ''' - ''' Looks up a localized string similar to The saved game folder for [PARAM] does not exist, the backup has been automatically marked as restored.. + ''' Looks up a localized string similar to The saved game folder for [PARAM] does not exist or could not be determined, the backup has been automatically marked as restored.. ''' Friend ReadOnly Property frmMain_AutoMark() As String Get @@ -3103,7 +3103,7 @@ Namespace My.Resources End Property ''' - ''' Looks up a localized string similar to The saved game folder for [PARAM] does not exist, this backup has been skipped.. + ''' Looks up a localized string similar to The saved game folder for [PARAM] does not exist or could not be determined, this backup has been skipped.. ''' Friend ReadOnly Property frmMain_NoAutoMark() As String Get diff --git a/GBM/My Project/Resources.resx b/GBM/My Project/Resources.resx index da4ee40..a85abc6 100644 --- a/GBM/My Project/Resources.resx +++ b/GBM/My Project/Resources.resx @@ -1736,7 +1736,7 @@ Clean folder on restore - The saved game folder for [PARAM] does not exist, the backup has been automatically marked as restored. + The saved game folder for [PARAM] does not exist or could not be determined, the backup has been automatically marked as restored. The backup file for [PARAM] is not ready to restore. @@ -1760,7 +1760,7 @@ [PARAM] New Backup Restored - The saved game folder for [PARAM] does not exist, this backup has been skipped. + The saved game folder for [PARAM] does not exist or could not be determined, this backup has been skipped. The backup file for [PARAM] has no checksum, it cannot be automatically restored.