From 8ebfed7ab70dd5dfe39b88bc3dc7059575f70e85 Mon Sep 17 00:00:00 2001 From: "Michael J. Seiferling" Date: Mon, 14 Nov 2016 15:37:44 -0600 Subject: [PATCH] Added experimental "Clean folder on restore" feature --- GBM/Classes/clsGame.vb | 13 +++++++++++++ GBM/Forms/frmGameManager.Designer.vb | 19 ++++++++++++++++--- GBM/Forms/frmGameManager.vb | 23 ++++++++++++++++++++++- GBM/Forms/frmMain.vb | 6 +++--- GBM/Managers/mgrCommon.vb | 2 +- GBM/Managers/mgrMonitorList.vb | 21 ++++++++++++--------- GBM/Managers/mgrRestore.vb | 19 +++++++++++++++---- GBM/Managers/mgrSQLite.vb | 28 ++++++++++++++++++++++++++-- GBM/My Project/AssemblyInfo.vb | 4 ++-- GBM/My Project/Resources.Designer.vb | 9 +++++++++ GBM/My Project/Resources.resx | 3 +++ 11 files changed, 122 insertions(+), 25 deletions(-) diff --git a/GBM/Classes/clsGame.vb b/GBM/Classes/clsGame.vb index acf07ff..43ce188 100644 --- a/GBM/Classes/clsGame.vb +++ b/GBM/Classes/clsGame.vb @@ -8,6 +8,7 @@ Private sFileType As String = String.Empty Private bAppendTimeStamp As Boolean = False Private iBackupLimit As Integer = 2 + Private bCleanFolder As Boolean = False Private sExcludeList As String = String.Empty Private sProcessPath As String = String.Empty Private sIcon As String = String.Empty @@ -127,6 +128,15 @@ End Set End Property + Property CleanFolder As Boolean + Get + Return bCleanFolder + End Get + Set(value As Boolean) + bCleanFolder = value + End Set + End Property + Property ExcludeList As String Set(value As String) sExcludeList = value @@ -268,6 +278,9 @@ If FolderSave <> oGame.FolderSave Then Return False End If + If CleanFolder <> oGame.CleanFolder Then + Return False + End If If AppendTimeStamp <> oGame.AppendTimeStamp Then Return False End If diff --git a/GBM/Forms/frmGameManager.Designer.vb b/GBM/Forms/frmGameManager.Designer.vb index 0f7d977..856fcac 100644 --- a/GBM/Forms/frmGameManager.Designer.vb +++ b/GBM/Forms/frmGameManager.Designer.vb @@ -95,6 +95,7 @@ Partial Class frmGameManager Me.cmsDeleteBackup = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.cmsDeleteOne = New System.Windows.Forms.ToolStripMenuItem() Me.cmsDeleteAll = New System.Windows.Forms.ToolStripMenuItem() + Me.chkCleanFolder = New System.Windows.Forms.CheckBox() Me.grpConfig.SuspendLayout() CType(Me.nudLimit, System.ComponentModel.ISupportInitialize).BeginInit() Me.grpExtra.SuspendLayout() @@ -151,6 +152,7 @@ Partial Class frmGameManager 'grpConfig ' Me.grpConfig.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.grpConfig.Controls.Add(Me.chkCleanFolder) Me.grpConfig.Controls.Add(Me.lblLimit) Me.grpConfig.Controls.Add(Me.nudLimit) Me.grpConfig.Controls.Add(Me.btnExclude) @@ -182,7 +184,7 @@ Partial Class frmGameManager Me.lblLimit.Location = New System.Drawing.Point(375, 130) Me.lblLimit.Name = "lblLimit" Me.lblLimit.Size = New System.Drawing.Size(68, 13) - Me.lblLimit.TabIndex = 13 + Me.lblLimit.TabIndex = 14 Me.lblLimit.Text = "Backup Limit" Me.lblLimit.Visible = False ' @@ -192,7 +194,7 @@ Partial Class frmGameManager Me.nudLimit.Minimum = New Decimal(New Integer() {2, 0, 0, 0}) Me.nudLimit.Name = "nudLimit" Me.nudLimit.Size = New System.Drawing.Size(40, 20) - Me.nudLimit.TabIndex = 12 + Me.nudLimit.TabIndex = 13 Me.nudLimit.Value = New Decimal(New Integer() {2, 0, 0, 0}) Me.nudLimit.Visible = False ' @@ -293,7 +295,7 @@ Partial Class frmGameManager Me.chkTimeStamp.Location = New System.Drawing.Point(190, 129) Me.chkTimeStamp.Name = "chkTimeStamp" Me.chkTimeStamp.Size = New System.Drawing.Size(133, 17) - Me.chkTimeStamp.TabIndex = 11 + Me.chkTimeStamp.TabIndex = 12 Me.chkTimeStamp.Text = "Save multiple backups" Me.chkTimeStamp.UseVisualStyleBackColor = True ' @@ -807,6 +809,16 @@ Partial Class frmGameManager Me.cmsDeleteAll.Size = New System.Drawing.Size(114, 22) Me.cmsDeleteAll.Text = "&All Files" ' + 'chkCleanFolder + ' + Me.chkCleanFolder.AutoSize = True + Me.chkCleanFolder.Location = New System.Drawing.Point(329, 101) + Me.chkCleanFolder.Name = "chkCleanFolder" + Me.chkCleanFolder.Size = New System.Drawing.Size(132, 17) + Me.chkCleanFolder.TabIndex = 11 + Me.chkCleanFolder.Text = "Clean folder on restore" + Me.chkCleanFolder.UseVisualStyleBackColor = True + ' 'frmGameManager ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -928,4 +940,5 @@ Partial Class frmGameManager Friend WithEvents cmsDeleteBackup As ContextMenuStrip Friend WithEvents cmsDeleteOne As ToolStripMenuItem Friend WithEvents cmsDeleteAll As ToolStripMenuItem + Friend WithEvents chkCleanFolder As CheckBox End Class diff --git a/GBM/Forms/frmGameManager.vb b/GBM/Forms/frmGameManager.vb index 14311b2..0039160 100644 --- a/GBM/Forms/frmGameManager.vb +++ b/GBM/Forms/frmGameManager.vb @@ -470,6 +470,7 @@ Public Class frmGameManager frm.ShowDialog() txtBox.Text = frm.BuilderString + VerifyCleanFolder() End Sub Private Function FindRestorePath() As Boolean @@ -714,6 +715,7 @@ Public Class frmGameManager txtFileType.Text = oApp.FileType txtExclude.Text = oApp.ExcludeList chkFolderSave.Checked = oApp.FolderSave + chkCleanFolder.Checked = oApp.CleanFolder chkTimeStamp.Checked = oApp.AppendTimeStamp nudLimit.Value = oApp.BackupLimit chkEnabled.Checked = oApp.Enabled @@ -826,6 +828,7 @@ Public Class frmGameManager WipeControls(grpConfig.Controls) WipeControls(grpExtra.Controls) WipeControls(grpStats.Controls) + chkCleanFolder.Enabled = False pbIcon.Image = Icon_Unknown chkEnabled.Enabled = True chkMonitorOnly.Enabled = True @@ -982,6 +985,7 @@ Public Class frmGameManager Else btnInclude.Enabled = True End If + VerifyCleanFolder() End Sub Private Sub TimeStampModeChange() @@ -996,6 +1000,17 @@ Public Class frmGameManager End If End Sub + Private Sub VerifyCleanFolder() + If Not bIsLoading Then + If chkFolderSave.Checked = True And txtExclude.Text = String.Empty And txtSavePath.Text <> String.Empty Then + chkCleanFolder.Enabled = True + Else + chkCleanFolder.Checked = False + chkCleanFolder.Enabled = False + End If + End If + End Sub + Private Sub EditApp() eCurrentMode = eModes.Edit ModeChange() @@ -1062,6 +1077,7 @@ Public Class frmGameManager oApp.FileType = txtFileType.Text oApp.ExcludeList = txtExclude.Text oApp.FolderSave = chkFolderSave.Checked + oApp.CleanFolder = chkCleanFolder.Checked oApp.AppendTimeStamp = chkTimeStamp.Checked oApp.BackupLimit = nudLimit.Value oApp.Enabled = chkEnabled.Checked @@ -1144,6 +1160,7 @@ Public Class frmGameManager eCurrentMode = eModes.View FillData() ModeChange() + VerifyCleanFolder() ElseIf lstGames.SelectedItems.Count > 1 Then eCurrentMode = eModes.MultiSelect ModeChange() @@ -1411,6 +1428,7 @@ Public Class frmGameManager lblName.Text = frmGameManager_lblName chkTimeStamp.Text = frmGameManager_chkTimeStamp chkFolderSave.Text = frmGameManager_chkFolderSave + chkCleanFolder.Text = frmGameManager_chkCleanFolder btnBackup.Text = frmGameManager_btnBackup btnClose.Text = frmGameManager_btnClose btnDelete.Text = frmGameManager_btnDelete @@ -1607,6 +1625,10 @@ Public Class frmGameManager End If End Sub + Private Sub txtSavePath_TextChanged(sender As Object, e As EventArgs) Handles txtSavePath.TextChanged + VerifyCleanFolder() + End Sub + Private Sub tmFilterTimer_Tick(sender As Object, ByVal e As EventArgs) Handles tmFilterTimer.Tick lstGames.DataSource = Nothing FormatAndFillList() @@ -1617,5 +1639,4 @@ Public Class frmGameManager Private Sub frmGameManager_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown txtQuickFilter.Focus() End Sub - End Class diff --git a/GBM/Forms/frmMain.vb b/GBM/Forms/frmMain.vb index a956d7e..e596fc2 100644 --- a/GBM/Forms/frmMain.vb +++ b/GBM/Forms/frmMain.vb @@ -181,7 +181,7 @@ Public Class frmMain End If If bPathVerified Then - If oRestore.CheckRestorePrereq(oRestoreInfo) Then + If oRestore.CheckRestorePrereq(oRestoreInfo, oGame.CleanFolder) Then oReadyList.Add(oRestoreInfo) End If End If @@ -661,9 +661,9 @@ Public Class frmMain Private Sub OpenAbout() Dim iProcessType As System.Reflection.ProcessorArchitecture = System.Reflection.AssemblyName.GetAssemblyName(Application.ExecutablePath()).ProcessorArchitecture - Dim sVersion As String = My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor + Dim sVersion As String = My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor & "." & My.Application.Info.Version.Build Dim sProcessType = [Enum].GetName(GetType(System.Reflection.ProcessorArchitecture), iProcessType) - Dim sRevision As String = My.Application.Info.Version.Build & "." & My.Application.Info.Version.Revision + Dim sRevision As String = My.Application.Info.Version.Revision Dim sConstCopyright As String = Chr(169) & mgrCommon.FormatString(App_Copyright, Now.Year.ToString) mgrCommon.ShowMessage(frmMain_About, New String() {sVersion, sProcessType, sRevision, sConstCopyright}, MsgBoxStyle.Information) diff --git a/GBM/Managers/mgrCommon.vb b/GBM/Managers/mgrCommon.vb index 7e7429e..79be112 100644 --- a/GBM/Managers/mgrCommon.vb +++ b/GBM/Managers/mgrCommon.vb @@ -30,7 +30,7 @@ Public Class mgrCommon Public Shared ReadOnly Property AppVersion As Integer Get - Return (My.Application.Info.Version.Major * 100) + My.Application.Info.Version.Minor + Return (My.Application.Info.Version.Major * 100) + (My.Application.Info.Version.Minor * 10) + My.Application.Info.Version.Build End Get End Property diff --git a/GBM/Managers/mgrMonitorList.vb b/GBM/Managers/mgrMonitorList.vb index f50df73..5421043 100644 --- a/GBM/Managers/mgrMonitorList.vb +++ b/GBM/Managers/mgrMonitorList.vb @@ -30,6 +30,7 @@ Public Class mgrMonitorList oGame.Enabled = CBool(dr("Enabled")) oGame.MonitorOnly = CBool(dr("MonitorOnly")) oGame.BackupLimit = CInt(dr("BackupLimit")) + oGame.CleanFolder = CBool(dr("CleanFolder")) Return oGame End Function @@ -54,6 +55,7 @@ Public Class mgrMonitorList hshParams.Add("Enabled", oGame.Enabled) hshParams.Add("MonitorOnly", oGame.MonitorOnly) hshParams.Add("BackupLimit", oGame.BackupLimit) + hshParams.Add("CleanFolder", oGame.CleanFolder) Return hshParams End Function @@ -94,7 +96,7 @@ Public Class mgrMonitorList Dim hshParams As Hashtable sSQL = "INSERT INTO monitorlist VALUES (@ID, @Name, @Process, @Path, @AbsolutePath, @FolderSave, @FileType, @TimeStamp, " - sSQL &= "@ExcludeList, @ProcessPath, @Icon, @Hours, @Version, @Company, @Enabled, @MonitorOnly, @BackupLimit)" + sSQL &= "@ExcludeList, @ProcessPath, @Icon, @Hours, @Version, @Company, @Enabled, @MonitorOnly, @BackupLimit, @CleanFolder)" 'Parameters hshParams = SetCoreParameters(oGame) @@ -110,7 +112,7 @@ Public Class mgrMonitorList sSQL = "UPDATE monitorlist SET Name=@Name, Process=@Process, Path=@Path, AbsolutePath=@AbsolutePath, FolderSave=@FolderSave, " sSQL &= "FileType=@FileType, TimeStamp=@TimeStamp, ExcludeList=@ExcludeList, ProcessPath=@ProcessPath, Icon=@Icon, " - sSQL &= "Hours=@Hours, Version=@Version, Company=@Company, Enabled=@Enabled, MonitorOnly=@MonitorOnly, BackupLimit=@BackupLimit WHERE MonitorID=@ID" + sSQL &= "Hours=@Hours, Version=@Version, Company=@Company, Enabled=@Enabled, MonitorOnly=@MonitorOnly, BackupLimit=@BackupLimit, CleanFolder=@CleanFolder WHERE MonitorID=@ID" 'Parameters hshParams = SetCoreParameters(oGame) @@ -315,11 +317,11 @@ Public Class mgrMonitorList sVersion = "(SELECT Version FROM monitorlist WHERE MonitorID=@ID)" End If - sSQL = "INSERT OR REPLACE INTO monitorlist (MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit) " + sSQL = "INSERT OR REPLACE INTO monitorlist (MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder) " sSQL &= "VALUES (@ID, @Name, @Process, @Path, @AbsolutePath, @FolderSave, @FileType, " sSQL &= sTimeStamp & ", @ExcludeList, " & sGamePath & ", " sSQL &= sIcon & ", @Hours, " & sVersion & ", " - sSQL &= sCompany & ", " & sMonitorGame & ", @MonitorOnly, " & sBackupLimit & ");" + sSQL &= sCompany & ", " & sMonitorGame & ", @MonitorOnly, " & sBackupLimit & ",@CleanFolder);" For Each oGame As clsGame In hshGames.Values hshParams = New Hashtable @@ -335,6 +337,7 @@ Public Class mgrMonitorList hshParams.Add("ExcludeList", oGame.ExcludeList) hshParams.Add("Hours", oGame.Hours) hshParams.Add("MonitorOnly", oGame.MonitorOnly) + hshParams.Add("CleanFolder", oGame.CleanFolder) 'Optional Parameters If (eSyncFields And clsGame.eOptionalSyncFields.Company) = clsGame.eOptionalSyncFields.Company Then @@ -471,9 +474,9 @@ Public Class mgrMonitorList Select Case eFilterType Case frmFilter.eFilterType.NoFilter - sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit FROM monitorlist ORDER BY Name Asc" + sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder FROM monitorlist ORDER BY Name Asc" Case frmFilter.eFilterType.FieldAnd, frmFilter.eFilterType.FieldOr - sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit FROM monitorlist" + sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder FROM monitorlist" If hshStringFilters.Count > 0 Then sSQL &= " WHERE (" @@ -495,7 +498,7 @@ Public Class mgrMonitorList End If sSQL &= " ORDER BY Name Asc" Case frmFilter.eFilterType.AnyTag - sSQL = "SELECT DISTINCT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit FROM monitorlist " + sSQL = "SELECT DISTINCT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder FROM monitorlist " sSQL &= "NATURAL JOIN gametags WHERE gametags.TagID IN (" For Each oTag As clsTag In oTagFilters @@ -507,7 +510,7 @@ Public Class mgrMonitorList sSQL = sSQL.TrimEnd(",") sSQL &= ") ORDER BY Name Asc" Case frmFilter.eFilterType.AllTags - sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit FROM monitorlist WHERE MonitorID IN " + sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder FROM monitorlist WHERE MonitorID IN " For Each oTag As clsTag In oTagFilters sSQL &= "(SELECT MonitorID FROM gametags WHERE monitorlist.MonitorID = gametags.MonitorID And TagID = @TagID" & iCounter & ")" @@ -520,7 +523,7 @@ Public Class mgrMonitorList sSQL &= " ORDER BY Name Asc" Case frmFilter.eFilterType.NoTags - sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit FROM monitorlist WHERE MonitorID NOT IN (SELECT MonitorID FROM gametags) ORDER BY Name Asc" + sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder FROM monitorlist WHERE MonitorID NOT IN (SELECT MonitorID FROM gametags) ORDER BY Name Asc" End Select Return sSQL diff --git a/GBM/Managers/mgrRestore.vb b/GBM/Managers/mgrRestore.vb index ca8f903..78514b7 100644 --- a/GBM/Managers/mgrRestore.vb +++ b/GBM/Managers/mgrRestore.vb @@ -161,7 +161,13 @@ Public Class mgrRestore Return slRemovedItems End Function - Public Function CheckRestorePrereq(ByVal oBackupInfo As clsBackup) As Boolean + Private Sub CleanFolder(ByVal sExtractPath As String) + If Directory.Exists(sExtractPath) Then + + End If + End Sub + + Public Function CheckRestorePrereq(ByVal oBackupInfo As clsBackup, ByVal bCleanFolder As Boolean) As Boolean Dim sHash As String Dim sExtractPath As String Dim sBackupFile As String = oSettings.BackupFolder & Path.DirectorySeparatorChar & oBackupInfo.FileName @@ -185,10 +191,15 @@ Public Class mgrRestore RaiseEvent UpdateLog(mgrCommon.FormatString(mgrRestore_ErrorNoPath, sExtractPath), False, ToolTipIcon.Error, True) Return False End If + Else + If bCleanFolder Then + mgrCommon.DeleteDirectory(sExtractPath, True) + Directory.CreateDirectory(sExtractPath) + End If End If - 'Check file integrity - If oSettings.CheckSum Then + 'Check file integrity + If oSettings.CheckSum Then If oBackupInfo.CheckSum <> String.Empty Then sHash = mgrHash.Generate_SHA256_Hash(sBackupFile) If sHash <> oBackupInfo.CheckSum Then @@ -282,7 +293,7 @@ Public Class mgrRestore RaiseEvent SetLastAction(mgrCommon.FormatString(mgrRestore_ActionComplete, oBackupInfo.CroppedName)) Else RaiseEvent SetLastAction(mgrCommon.FormatString(mgrRestore_ActionFailed, oBackupInfo.CroppedName)) - End If + End If Next End Sub diff --git a/GBM/Managers/mgrSQLite.vb b/GBM/Managers/mgrSQLite.vb index add2a4a..0909ad7 100644 --- a/GBM/Managers/mgrSQLite.vb +++ b/GBM/Managers/mgrSQLite.vb @@ -80,7 +80,7 @@ Public Class mgrSQLite sSql &= "CREATE TABLE monitorlist (MonitorID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL, Process TEXT NOT NULL, Path TEXT, " & "AbsolutePath BOOLEAN NOT NULL, FolderSave BOOLEAN NOT NULL, FileType TEXT, TimeStamp BOOLEAN NOT NULL, ExcludeList TEXT NOT NULL, " & "ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN NOT NULL, MonitorOnly BOOLEAN NOT NULL, " & - "BackupLimit INTEGER NOT NULL, PRIMARY KEY(Name, Process));" + "BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, PRIMARY KEY(Name, Process));" 'Add Tables (Tags) sSql &= "CREATE TABLE tags (TagID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY); " @@ -117,7 +117,7 @@ Public Class mgrSQLite sSql = "CREATE TABLE monitorlist (MonitorID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL, Process TEXT NOT NULL, Path TEXT, " & "AbsolutePath BOOLEAN NOT NULL, FolderSave BOOLEAN NOT NULL, FileType TEXT, TimeStamp BOOLEAN NOT NULL, ExcludeList TEXT NOT NULL, " & "ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN NOT NULL, MonitorOnly BOOLEAN NOT NULL, " & - "BackupLimit INTEGER NOT NULL, PRIMARY KEY(Name, Process));" + "BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, PRIMARY KEY(Name, Process));" 'Add Tables (Remote Manifest) sSql &= "CREATE TABLE manifest (ManifestID TEXT NOT NULL PRIMARY KEY, Name TEXT NOT NULL, FileName TEXT NOT NULL, RestorePath TEXT NOT NULL, " & @@ -600,6 +600,30 @@ Public Class mgrSQLite End If End If + '1.01 Upgrade + If GetDatabaseVersion() < 101 Then + If eDatabase = Database.Local Then + 'Backup DB before starting + BackupDB("v98") + + 'Add new field(s) + sSQL = "ALTER TABLE monitorlist ADD COLUMN CleanFolder BOOLEAN NOT NULL DEFAULT 0;" + sSQL &= "PRAGMA user_version=101" + + RunParamQuery(sSQL, New Hashtable) + End If + If eDatabase = Database.Remote Then + 'Backup DB before starting + BackupDB("v98") + + 'Add new field(s) + sSQL = "ALTER TABLE monitorlist ADD COLUMN CleanFolder BOOLEAN NOT NULL DEFAULT 0;" + sSQL &= "PRAGMA user_version=101" + + RunParamQuery(sSQL, New Hashtable) + End If + End If + End Sub Public Function GetDBSize() As Long diff --git a/GBM/My Project/AssemblyInfo.vb b/GBM/My Project/AssemblyInfo.vb index bc0a8d4..ed587ad 100644 --- a/GBM/My Project/AssemblyInfo.vb +++ b/GBM/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file diff --git a/GBM/My Project/Resources.Designer.vb b/GBM/My Project/Resources.Designer.vb index 3d98856..27759c1 100644 --- a/GBM/My Project/Resources.Designer.vb +++ b/GBM/My Project/Resources.Designer.vb @@ -1293,6 +1293,15 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized string similar to Clean folder on restore. + ''' + Friend ReadOnly Property frmGameManager_chkCleanFolder() As String + Get + Return ResourceManager.GetString("frmGameManager_chkCleanFolder", resourceCulture) + End Get + End Property + ''' ''' Looks up a localized string similar to Monitor this game. ''' diff --git a/GBM/My Project/Resources.resx b/GBM/My Project/Resources.resx index f86cdc1..5ee2c95 100644 --- a/GBM/My Project/Resources.resx +++ b/GBM/My Project/Resources.resx @@ -1732,4 +1732,7 @@ Unknown + + Clean folder on restore + \ No newline at end of file