Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0ed067e36f | ||
|
|
bca2fe2239 | ||
|
|
fa5d03ef52 | ||
|
|
998a680999 | ||
|
|
f5972da9eb | ||
|
|
794b0f9908 | ||
|
|
daa5f928bf | ||
|
|
72e3ccb661 | ||
|
|
9e7a4b5efc | ||
|
|
692deaaef9 | ||
|
|
a3572abb3d | ||
|
|
2680f857a9 |
@@ -382,7 +382,7 @@ Public Class frmGameManager
|
|||||||
If sNewPath <> String.Empty Then
|
If sNewPath <> String.Empty Then
|
||||||
txtIcon.Text = sNewPath
|
txtIcon.Text = sNewPath
|
||||||
If IO.File.Exists(sNewPath) Then
|
If IO.File.Exists(sNewPath) Then
|
||||||
pbIcon.Image = Image.FromFile(sNewPath)
|
pbIcon.Image = mgrCommon.SafeIconFromFile(sNewPath)
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
@@ -794,7 +794,7 @@ Public Class frmGameManager
|
|||||||
|
|
||||||
For Each oBackup In oBackupData
|
For Each oBackup In oBackupData
|
||||||
'Delete the specific remote manifest entry
|
'Delete the specific remote manifest entry
|
||||||
mgrManifest.DoManifestDeletebyManifestID(oBackup, mgrSQLite.Database.Remote)
|
mgrManifest.DoManifestDeleteByManifestID(oBackup, mgrSQLite.Database.Remote)
|
||||||
'Delete referenced backup file from the backup folder
|
'Delete referenced backup file from the backup folder
|
||||||
mgrCommon.DeleteFile(BackupFolder & oBackup.FileName)
|
mgrCommon.DeleteFile(BackupFolder & oBackup.FileName)
|
||||||
'Check for sub-directory and delete if empty (we need to do this every pass just in case the user had a mix of settings at one point)
|
'Check for sub-directory and delete if empty (we need to do this every pass just in case the user had a mix of settings at one point)
|
||||||
@@ -802,7 +802,7 @@ Public Class frmGameManager
|
|||||||
Next
|
Next
|
||||||
|
|
||||||
'Delete local manifest entry
|
'Delete local manifest entry
|
||||||
mgrManifest.DoManifestDeletebyMonitorID(CurrentBackupItem, mgrSQLite.Database.Local)
|
mgrManifest.DoManifestDeleteByMonitorID(CurrentBackupItem, mgrSQLite.Database.Local)
|
||||||
|
|
||||||
LoadBackupData()
|
LoadBackupData()
|
||||||
FillData()
|
FillData()
|
||||||
@@ -868,7 +868,7 @@ Public Class frmGameManager
|
|||||||
|
|
||||||
'Icon
|
'Icon
|
||||||
If IO.File.Exists(oApp.Icon) Then
|
If IO.File.Exists(oApp.Icon) Then
|
||||||
pbIcon.Image = Image.FromFile(oApp.Icon)
|
pbIcon.Image = mgrCommon.SafeIconFromFile(oApp.Icon)
|
||||||
Else
|
Else
|
||||||
pbIcon.Image = Icon_Unknown
|
pbIcon.Image = Icon_Unknown
|
||||||
End If
|
End If
|
||||||
|
|||||||
+33
-8
@@ -526,7 +526,7 @@ Public Class frmMain
|
|||||||
sIcon = fbBrowser.FileName
|
sIcon = fbBrowser.FileName
|
||||||
If File.Exists(sIcon) Then
|
If File.Exists(sIcon) Then
|
||||||
oProcess.GameInfo.Icon = sIcon
|
oProcess.GameInfo.Icon = sIcon
|
||||||
pbIcon.Image = Image.FromFile(sIcon)
|
pbIcon.Image = mgrCommon.SafeIconFromFile(sIcon)
|
||||||
mgrMonitorList.DoListUpdate(oProcess.GameInfo)
|
mgrMonitorList.DoListUpdate(oProcess.GameInfo)
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
@@ -577,6 +577,25 @@ Public Class frmMain
|
|||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub SetGameIcon()
|
||||||
|
Dim ic As Icon
|
||||||
|
Dim oBitmap As Bitmap
|
||||||
|
|
||||||
|
Try
|
||||||
|
'Grab icon from the executable
|
||||||
|
ic = System.Drawing.Icon.ExtractAssociatedIcon(oProcess.FoundProcess.MainModule.FileName)
|
||||||
|
oBitmap = New Bitmap(ic.ToBitmap)
|
||||||
|
ic.Dispose()
|
||||||
|
|
||||||
|
'Set the icon, we need to use an intermediary object to prevent file locking
|
||||||
|
pbIcon.Image = oBitmap
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
UpdateLog(mgrCommon.FormatString(frmMain_ErrorGameIcon), False, ToolTipIcon.Error)
|
||||||
|
UpdateLog(mgrCommon.FormatString(App_GenericError, ex.Message), False,, False)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
Private Sub SetGameInfo(Optional ByVal bMulti As Boolean = False)
|
Private Sub SetGameInfo(Optional ByVal bMulti As Boolean = False)
|
||||||
Dim sFileName As String = String.Empty
|
Dim sFileName As String = String.Empty
|
||||||
Dim sFileVersion As String = String.Empty
|
Dim sFileVersion As String = String.Empty
|
||||||
@@ -586,19 +605,19 @@ Public Class frmMain
|
|||||||
lblStatus1.Text = String.Empty
|
lblStatus1.Text = String.Empty
|
||||||
lblStatus2.Text = String.Empty
|
lblStatus2.Text = String.Empty
|
||||||
lblStatus3.Text = String.Empty
|
lblStatus3.Text = String.Empty
|
||||||
|
pbIcon.Image = Icon_Unknown
|
||||||
|
|
||||||
|
'Set Game Icon
|
||||||
|
If Not mgrCommon.IsUnix Then SetGameIcon()
|
||||||
|
|
||||||
'Get Process Information
|
|
||||||
Try
|
Try
|
||||||
Dim ic As Icon = System.Drawing.Icon.ExtractAssociatedIcon(oProcess.FoundProcess.MainModule.FileName)
|
|
||||||
pbIcon.Image = ic.ToBitmap
|
|
||||||
|
|
||||||
'Set Game Details
|
'Set Game Details
|
||||||
sFileName = oProcess.FoundProcess.MainModule.FileName
|
sFileName = oProcess.FoundProcess.MainModule.FileName
|
||||||
sFileVersion = oProcess.FoundProcess.MainModule.FileVersionInfo.FileVersion
|
sFileVersion = oProcess.FoundProcess.MainModule.FileVersionInfo.FileVersion
|
||||||
sCompanyName = oProcess.FoundProcess.MainModule.FileVersionInfo.CompanyName
|
sCompanyName = oProcess.FoundProcess.MainModule.FileVersionInfo.CompanyName
|
||||||
|
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
pbIcon.Image = Icon_Unknown
|
UpdateLog(mgrCommon.FormatString(frmMain_ErrorGameDetails), False, ToolTipIcon.Error)
|
||||||
|
UpdateLog(mgrCommon.FormatString(App_GenericError, ex.Message), False,, False)
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
'Get Game Details
|
'Get Game Details
|
||||||
@@ -621,7 +640,7 @@ Public Class frmMain
|
|||||||
|
|
||||||
'Check for a custom icon & details
|
'Check for a custom icon & details
|
||||||
If File.Exists(oProcess.GameInfo.Icon) Then
|
If File.Exists(oProcess.GameInfo.Icon) Then
|
||||||
pbIcon.Image = Image.FromFile(oProcess.GameInfo.Icon)
|
pbIcon.Image = mgrCommon.SafeIconFromFile(oProcess.GameInfo.Icon)
|
||||||
End If
|
End If
|
||||||
If sFileName = String.Empty Then
|
If sFileName = String.Empty Then
|
||||||
If oProcess.GameInfo.ProcessPath <> String.Empty Then
|
If oProcess.GameInfo.ProcessPath <> String.Empty Then
|
||||||
@@ -1051,6 +1070,12 @@ Public Class frmMain
|
|||||||
Exit Sub
|
Exit Sub
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
'Check Special Paths
|
||||||
|
If Not mgrPath.CheckSpecialPaths Then
|
||||||
|
bInitFail = True
|
||||||
|
Exit Sub
|
||||||
|
End If
|
||||||
|
|
||||||
'Local Database Check
|
'Local Database Check
|
||||||
VerifyDBVersion(mgrSQLite.Database.Local)
|
VerifyDBVersion(mgrSQLite.Database.Local)
|
||||||
LocalDatabaseCheck()
|
LocalDatabaseCheck()
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ Public Class frmSessions
|
|||||||
dgSessions.Rows.Add(New Object() {dr("MonitorID"), dr("Name"), dr("Start"), dStart, dr("End"), dEnd, dHours})
|
dgSessions.Rows.Add(New Object() {dr("MonitorID"), dr("Name"), dr("Start"), dStart, dr("End"), dEnd, dHours})
|
||||||
Next
|
Next
|
||||||
|
|
||||||
lblTotalHours.Text = mgrCommon.FormatString(frmSessions_lblTotalHours, dTotalHours)
|
lblTotalHours.Text = mgrCommon.FormatString(frmSessions_lblTotalHours, Math.Round(dTotalHours, 2))
|
||||||
|
|
||||||
dgSessions.AutoResizeColumns()
|
dgSessions.AutoResizeColumns()
|
||||||
End Sub
|
End Sub
|
||||||
@@ -290,9 +290,21 @@ Public Class frmSessions
|
|||||||
|
|
||||||
Select Case iDataTypeCol
|
Select Case iDataTypeCol
|
||||||
Case iDataType.DecimalType
|
Case iDataType.DecimalType
|
||||||
iCompareResult = If(CDec(dgRow1.Cells(iSortCol).Value) < CDec(dgRow2.Cells(iSortCol).Value), -1, 1)
|
If (CDec(dgRow1.Cells(iSortCol).Value) = CDec(dgRow2.Cells(iSortCol).Value)) Then
|
||||||
|
iCompareResult = 0
|
||||||
|
ElseIf (CDec(dgRow1.Cells(iSortCol).Value) < CDec(dgRow2.Cells(iSortCol).Value)) Then
|
||||||
|
iCompareResult = -1
|
||||||
|
Else
|
||||||
|
iCompareResult = 1
|
||||||
|
End If
|
||||||
Case iDataType.IntType
|
Case iDataType.IntType
|
||||||
iCompareResult = If(CInt(dgRow1.Cells(iSortCol).Value) < CInt(dgRow2.Cells(iSortCol).Value), -1, 1)
|
If (CInt(dgRow1.Cells(iSortCol).Value) = CInt(dgRow2.Cells(iSortCol).Value)) Then
|
||||||
|
iCompareResult = 0
|
||||||
|
ElseIf (CInt(dgRow1.Cells(iSortCol).Value) < CInt(dgRow2.Cells(iSortCol).Value)) Then
|
||||||
|
iCompareResult = -1
|
||||||
|
Else
|
||||||
|
iCompareResult = 1
|
||||||
|
End If
|
||||||
Case iDataType.StringType
|
Case iDataType.StringType
|
||||||
iCompareResult = String.Compare(CStr(dgRow1.Cells(iSortCol).Value), CStr(dgRow2.Cells(iSortCol).Value))
|
iCompareResult = String.Compare(CStr(dgRow1.Cells(iSortCol).Value), CStr(dgRow2.Cells(iSortCol).Value))
|
||||||
Case iDataType.DateTimeType
|
Case iDataType.DateTimeType
|
||||||
|
|||||||
@@ -143,10 +143,13 @@ Public Class mgrBackup
|
|||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If mgrRestore.CheckManifest(oGame.ID) Then
|
'A manifest check is only required when "Save Multiple Backups" is disabled
|
||||||
If mgrCommon.ShowMessage(mgrBackup_ConfirmManifestConflict, oGame.Name, MsgBoxStyle.YesNo) = MsgBoxResult.No Then
|
If Not oGame.AppendTimeStamp Then
|
||||||
RaiseEvent UpdateLog(mgrBackup_ErrorManifestConflict, False, ToolTipIcon.Error, True)
|
If mgrRestore.CheckManifest(oGame.ID) Then
|
||||||
Return False
|
If mgrCommon.ShowMessage(mgrBackup_ConfirmManifestConflict, oGame.Name, MsgBoxStyle.YesNo) = MsgBoxResult.No Then
|
||||||
|
RaiseEvent UpdateLog(mgrBackup_ErrorManifestConflict, False, ToolTipIcon.Error, True)
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,18 @@ Public Class mgrCommon
|
|||||||
Return oFormatter.Deserialize(oStream)
|
Return oFormatter.Deserialize(oStream)
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function SafeIconFromFile(ByVal sPath As String) As Image
|
||||||
|
Dim oImage As Image
|
||||||
|
Dim oReturnImage As Image
|
||||||
|
Dim oImageSize As Size = New Size(48, 48)
|
||||||
|
|
||||||
|
oImage = Image.FromFile(sPath)
|
||||||
|
oReturnImage = New Bitmap(oImage, oImageSize)
|
||||||
|
oImage.Dispose()
|
||||||
|
|
||||||
|
Return oReturnImage
|
||||||
|
End Function
|
||||||
|
|
||||||
Public Shared Function IsAddress(ByVal sURL As String) As Boolean
|
Public Shared Function IsAddress(ByVal sURL As String) As Boolean
|
||||||
If (sURL.IndexOf("http://", 0, StringComparison.CurrentCultureIgnoreCase) > -1) Or (sURL.IndexOf("https://", 0, StringComparison.CurrentCultureIgnoreCase) > -1) Then
|
If (sURL.IndexOf("http://", 0, StringComparison.CurrentCultureIgnoreCase) > -1) Or (sURL.IndexOf("https://", 0, StringComparison.CurrentCultureIgnoreCase) > -1) Then
|
||||||
Return True
|
Return True
|
||||||
|
|||||||
+40
-12
@@ -202,6 +202,28 @@ Public Class mgrPath
|
|||||||
Return sResult
|
Return sResult
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function CheckSpecialPaths() As Boolean
|
||||||
|
Dim hshEnvs As New Hashtable
|
||||||
|
Dim bNoError As Boolean = True
|
||||||
|
|
||||||
|
hshEnvs.Add("Documents", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments))
|
||||||
|
hshEnvs.Add("AppDataRoaming", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData))
|
||||||
|
hshEnvs.Add("AppDataLocal", Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData))
|
||||||
|
If Not mgrCommon.IsUnix Then
|
||||||
|
hshEnvs.Add("UserData", Environment.GetFolderPath(Environment.SpecialFolder.UserProfile))
|
||||||
|
hshEnvs.Add("PublicDocuments", Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments))
|
||||||
|
End If
|
||||||
|
|
||||||
|
For Each de As DictionaryEntry In hshEnvs
|
||||||
|
If de.Value = String.Empty Then
|
||||||
|
mgrCommon.ShowMessage(mgrPath_SpecialPathError, de.Key, MsgBoxStyle.Critical)
|
||||||
|
bNoError = False
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
Return bNoError
|
||||||
|
End Function
|
||||||
|
|
||||||
Public Shared Function ReplaceSpecialPaths(sValue As String) As String
|
Public Shared Function ReplaceSpecialPaths(sValue As String) As String
|
||||||
Dim sMyDocs As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
|
Dim sMyDocs As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
|
||||||
Dim sPublicDocs As String = Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments)
|
Dim sPublicDocs As String = Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments)
|
||||||
@@ -246,39 +268,45 @@ Public Class mgrPath
|
|||||||
|
|
||||||
Public Shared Function ReverseSpecialPaths(sValue As String) As String
|
Public Shared Function ReverseSpecialPaths(sValue As String) As String
|
||||||
Dim sMyDocs As String = "*mydocs*"
|
Dim sMyDocs As String = "*mydocs*"
|
||||||
|
Dim sEnvMyDocs As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
|
||||||
Dim sPublicDocs As String = "*publicdocs*"
|
Dim sPublicDocs As String = "*publicdocs*"
|
||||||
Dim sAppDataRoaming As String = "*appdatalocal*"
|
Dim sEnvPublicDocs As String = Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments)
|
||||||
Dim sAppDataLocal As String = "*appdataroaming*"
|
Dim sAppDataLocal As String = "*appdatalocal*"
|
||||||
|
Dim sEnvAppDataLocal As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
|
||||||
|
Dim sAppDataRoaming As String = "*appdataroaming*"
|
||||||
|
Dim sEnvAppDataRoaming As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
|
||||||
Dim sCurrentUser As String = "*currentuser*"
|
Dim sCurrentUser As String = "*currentuser*"
|
||||||
|
Dim sEnvCurrentUser As String = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
|
||||||
Dim oCustomVariable As clsPathVariable
|
Dim oCustomVariable As clsPathVariable
|
||||||
|
|
||||||
|
|
||||||
For Each oCustomVariable In hshCustomVariables.Values
|
For Each oCustomVariable In hshCustomVariables.Values
|
||||||
If sValue.Contains(oCustomVariable.Path) Then
|
If sValue.Contains(oCustomVariable.Path) Then
|
||||||
Return sValue.Replace(oCustomVariable.Path, oCustomVariable.FormattedName)
|
Return sValue.Replace(oCustomVariable.Path, oCustomVariable.FormattedName)
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
|
|
||||||
If sValue.Contains(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)) Then
|
If sValue.Contains(sEnvAppDataRoaming) Then
|
||||||
Return sValue.Replace(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), sAppDataLocal)
|
Return sValue.Replace(sEnvAppDataRoaming, sAppDataRoaming)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If sValue.Contains(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)) Then
|
If sValue.Contains(sEnvAppDataLocal) Then
|
||||||
Return sValue.Replace(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), sAppDataRoaming)
|
Return sValue.Replace(sEnvAppDataLocal, sAppDataLocal)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
'This needs to be tested last for Unix compatability
|
'This needs to be tested last for Unix compatability
|
||||||
If sValue.Contains(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)) Then
|
If sValue.Contains(sEnvMyDocs) Then
|
||||||
Return sValue.Replace(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), sMyDocs)
|
Return sValue.Replace(sEnvMyDocs, sMyDocs)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
'Don't use these in Unix
|
'Don't use these in Unix
|
||||||
If Not mgrCommon.IsUnix Then
|
If Not mgrCommon.IsUnix Then
|
||||||
If sValue.Contains(Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments)) Then
|
If sValue.Contains(sEnvPublicDocs) Then
|
||||||
Return sValue.Replace(Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments), sPublicDocs)
|
Return sValue.Replace(sEnvPublicDocs, sPublicDocs)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If sValue.Contains(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)) Then
|
If sValue.Contains(sEnvCurrentUser) Then
|
||||||
Return sValue.Replace(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), sCurrentUser)
|
Return sValue.Replace(sEnvCurrentUser, sCurrentUser)
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices
|
|||||||
' by using the '*' as shown below:
|
' by using the '*' as shown below:
|
||||||
' <Assembly: AssemblyVersion("1.0.*")>
|
' <Assembly: AssemblyVersion("1.0.*")>
|
||||||
|
|
||||||
<Assembly: AssemblyVersion("1.1.3.*")>
|
<Assembly: AssemblyVersion("1.1.4.*")>
|
||||||
<Assembly: AssemblyFileVersion("1.1.3.0")>
|
<Assembly: AssemblyFileVersion("1.1.4.0")>
|
||||||
|
|
||||||
<Assembly: NeutralResourcesLanguageAttribute("en")>
|
<Assembly: NeutralResourcesLanguageAttribute("en")>
|
||||||
Generated
+27
-9
@@ -2877,15 +2877,6 @@ Namespace My.Resources
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
|
||||||
''' Looks up a localized string similar to This tool removes orphaned backup information from the local manifest based on the current backup folder. Data can become orphaned when backups are deleted by various computers that share the same backup folder on a cloud or network.[BR][BR]When alternating between different backup folders you should NOT use this tool.[BR][BR]Do you wish to proceed?.
|
|
||||||
'''</summary>
|
|
||||||
Friend ReadOnly Property frmMain_ConfirmManifestClean() As String
|
|
||||||
Get
|
|
||||||
Return ResourceManager.GetString("frmMain_ConfirmManifestClean", resourceCulture)
|
|
||||||
End Get
|
|
||||||
End Property
|
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Do you wish to cancel the monitoring of [PARAM]?[BR][BR]Warning: When monitoring is cancelled, session time is NOT saved..
|
''' Looks up a localized string similar to Do you wish to cancel the monitoring of [PARAM]?[BR][BR]Warning: When monitoring is cancelled, session time is NOT saved..
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -3084,6 +3075,24 @@ Namespace My.Resources
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to An error occured while obtaining the details of the detected game..
|
||||||
|
'''</summary>
|
||||||
|
Friend ReadOnly Property frmMain_ErrorGameDetails() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("frmMain_ErrorGameDetails", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to An error occured while extracting the executable icon..
|
||||||
|
'''</summary>
|
||||||
|
Friend ReadOnly Property frmMain_ErrorGameIcon() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("frmMain_ErrorGameIcon", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to An unexpected error occured while initializing GBM.[BR][BR][PARAM][BR][BR]Do you wish to continue anyway? (Not Recommended).
|
''' Looks up a localized string similar to An unexpected error occured while initializing GBM.[BR][BR][PARAM][BR][BR]Do you wish to continue anyway? (Not Recommended).
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -6060,6 +6069,15 @@ Namespace My.Resources
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to An error occured while determining a required system path. [BR][BR]The environment value for [PARAM] is empty.[BR][BR]The application will now exit..
|
||||||
|
'''</summary>
|
||||||
|
Friend ReadOnly Property mgrPath_SpecialPathError() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("mgrPath_SpecialPathError", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to [PARAM] backup restored..
|
''' Looks up a localized string similar to [PARAM] backup restored..
|
||||||
'''</summary>
|
'''</summary>
|
||||||
|
|||||||
@@ -133,9 +133,6 @@
|
|||||||
<data name="frmMain_ManifestTotalRemoved" xml:space="preserve">
|
<data name="frmMain_ManifestTotalRemoved" xml:space="preserve">
|
||||||
<value>[PARAM] entries were removed from the local manifest.</value>
|
<value>[PARAM] entries were removed from the local manifest.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="frmMain_ConfirmManifestClean" xml:space="preserve">
|
|
||||||
<value>This tool removes orphaned backup information from the local manifest based on the current backup folder. Data can become orphaned when backups are deleted by various computers that share the same backup folder on a cloud or network.[BR][BR]When alternating between different backup folders you should NOT use this tool.[BR][BR]Do you wish to proceed?</value>
|
|
||||||
</data>
|
|
||||||
<data name="frmMain_ConfirmRebuild" xml:space="preserve">
|
<data name="frmMain_ConfirmRebuild" xml:space="preserve">
|
||||||
<value>This will rebuild all databases and shrink them to an optimal size.[BR]This should only be used if your gbm.s3db files are becoming very large.[BR][BR]Do you wish to continue?</value>
|
<value>This will rebuild all databases and shrink them to an optimal size.[BR]This should only be used if your gbm.s3db files are becoming very large.[BR][BR]Do you wish to continue?</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -2191,4 +2188,13 @@
|
|||||||
<data name="mgrBackup_ConfirmOverwriteRelative" xml:space="preserve">
|
<data name="mgrBackup_ConfirmOverwriteRelative" xml:space="preserve">
|
||||||
<value>A file with the same name already exists in the backup folder.[BR][BR]This game stores saves in a relative location, you may need to restore the current backup if the game was recently re-installed.[BR][BR]Do you want to overwrite this file?</value>
|
<value>A file with the same name already exists in the backup folder.[BR][BR]This game stores saves in a relative location, you may need to restore the current backup if the game was recently re-installed.[BR][BR]Do you want to overwrite this file?</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="mgrPath_SpecialPathError" xml:space="preserve">
|
||||||
|
<value>An error occured while determining a required system path. [BR][BR]The environment value for [PARAM] is empty.[BR][BR]The application will now exit.</value>
|
||||||
|
</data>
|
||||||
|
<data name="frmMain_ErrorGameDetails" xml:space="preserve">
|
||||||
|
<value>An error occured while obtaining the details of the detected game.</value>
|
||||||
|
</data>
|
||||||
|
<data name="frmMain_ErrorGameIcon" xml:space="preserve">
|
||||||
|
<value>An error occured while extracting the executable icon.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 170 KiB After Width: | Height: | Size: 358 KiB |
+16
-15
@@ -1,24 +1,25 @@
|
|||||||
Game Backup Monitor v1.1.3 Readme
|
Game Backup Monitor v1.1.4 Readme
|
||||||
http://mikemaximus.github.io/gbm-web/
|
http://mikemaximus.github.io/gbm-web/
|
||||||
gamebackupmonitor@gmail.com
|
gamebackupmonitor@gmail.com
|
||||||
|
|
||||||
July 5th, 2018
|
August 25th, 2018
|
||||||
|
|
||||||
New in 1.1.3
|
New in 1.1.4
|
||||||
|
|
||||||
All Platforms:
|
All Platforms:
|
||||||
|
|
||||||
- Game tags are now sorted alphanumerically on the Game Manager and in XML exports.
|
- Changed method of handling required OS environment paths and added a new path check on startup.
|
||||||
- GBM now displays a unique backup overwrite warning for games that use a relative saved game path.
|
- Incorrect conflict warnings will no longer be shown in some situations when running a backup configuration with "Save Multiple Backups" enabled.
|
||||||
- The "Save Multiple Backups" setting now allows infinite backups when "Backup Limit" is set to 0. This is now the default for new configurations.
|
- Fixed the precision of "Total Hours" on the Session Viewer, it now always rounds to 2 decimal places.
|
||||||
- "Save Multiple Backups" and "Backup Limit" are now core fields, they are synced by default and included in the Import/Export.
|
|
||||||
- The Game Manager will now clean up it's own manifest when backup files are deleted outside of GBM. As to not affect performance, this only occurs when the "Backup Data" field is accessed.
|
Windows:
|
||||||
- When a single game is selected, the Game Manager now restores the currently selected backup, instead of always restoring the latest backup.
|
|
||||||
- If possible, GBM now displays the full path of the detected process when multiple configurations are triggered.
|
- GBM will no longer keep an open file handle on detected processes and custom icons.
|
||||||
- Fixed an issue that could cause the certain controls to become enabled incorrectly on the Game Manager.
|
|
||||||
- Fixed an issue that caused GBM not to remove empty sub-folders unless the "Use Game ID for files and folders" setting was enabled when the folder was created.
|
Linux:
|
||||||
- Fixed an issue that caused GBM not to rename backup files or sub-folders unless the "Use Game ID for files and folders" setting was enabled.
|
|
||||||
- Fixed an issue that caused GBM to only rename the most current backup file when modifying a Name or Game ID.
|
- Sorting by "Hours" in the Session Viewer will no longer crash GBM on certain systems.
|
||||||
- GBM no longer displays a sync warning when the user deletes all game configurations from the Game Manager.
|
- GBM no longer attempts to get icons from a Linux binary.
|
||||||
|
- Removed compression from GBM icon to prevent issues with recent versions of imagemagick.
|
||||||
|
|
||||||
The entire version history of GBM releases is available at http://mikemaximus.github.io/gbm-web/versionhistory.html
|
The entire version history of GBM releases is available at http://mikemaximus.github.io/gbm-web/versionhistory.html
|
||||||
@@ -9,7 +9,9 @@ Game Backup Monitor is a simple, but flexible application that detects games as
|
|||||||
**Platform**: Windows (.NET 4) & Linux (Mono)
|
**Platform**: Windows (.NET 4) & Linux (Mono)
|
||||||
|
|
||||||
[About Game Backup Monitor](http://mikemaximus.github.io/gbm-web/about.html) <br />
|
[About Game Backup Monitor](http://mikemaximus.github.io/gbm-web/about.html) <br />
|
||||||
|
[Contribute to Game Backup Monitor](http://mikemaximus.github.io/gbm-web/contribute.html) <br />
|
||||||
[Game Backup Monitor FAQ](http://mikemaximus.github.io/gbm-web/faq.html) <br />
|
[Game Backup Monitor FAQ](http://mikemaximus.github.io/gbm-web/faq.html) <br />
|
||||||
[Game Backup Monitor Manual](http://mikemaximus.github.io/gbm-web/manual.html) <br />
|
[Game Backup Monitor Manual](http://mikemaximus.github.io/gbm-web/manual.html) <br />
|
||||||
[List of Preconfigured Games](http://mikemaximus.github.io/gbm-web/GBM_Official.xml) <br /> <br />
|
[Preconfigured Windows Games](http://mikemaximus.github.io/gbm-web/GBM_Official.xml) <br />
|
||||||
|
[Preconfigured Linux Games](http://mikemaximus.github.io/gbm-web/GBM_Official_Linux.xml) <br /> <br />
|
||||||
Updates regarding this project are available via the [Game Backup Monitor web site](http://mikemaximus.github.io/gbm-web/).
|
Updates regarding this project are available via the [Game Backup Monitor web site](http://mikemaximus.github.io/gbm-web/).
|
||||||
|
|||||||
Reference in New Issue
Block a user