diff --git a/AideDeJeu/AideDeJeu.UWP/AideDeJeu.UWP.csproj b/AideDeJeu/AideDeJeu.UWP/AideDeJeu.UWP.csproj
index 9f1d1da3..eb6d4a47 100644
--- a/AideDeJeu/AideDeJeu.UWP/AideDeJeu.UWP.csproj
+++ b/AideDeJeu/AideDeJeu.UWP/AideDeJeu.UWP.csproj
@@ -112,6 +112,9 @@
library.db
+
+ library.ver
+
diff --git a/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs b/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs
index da78d701..604c40e9 100644
--- a/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs
+++ b/AideDeJeu/AideDeJeu.UWP/NativeAPI.cs
@@ -25,21 +25,62 @@ namespace AideDeJeu.UWP
public async Task GetDatabasePathAsync(string databaseName)
{
- var documentsDirectoryPath = Windows.Storage.ApplicationData.Current.LocalFolder.Path;
- var path = Path.Combine(documentsDirectoryPath, $"{databaseName}.db");
-
- if (!File.Exists(path))
+ if (await CheckDatabaseVersionAsync(databaseName))
{
- var assembly = typeof(Version_UWP).GetTypeInfo().Assembly;
- using (var inStream = assembly.GetManifestResourceStream($"AideDeJeu.UWP.{databaseName}.db"))
+ await CopyOldToNewFileAsync(databaseName, "db");
+ await CopyOldToNewFileAsync(databaseName, "ver");
+ }
+ return GetNewFilePath(databaseName, "db");
+ }
+
+ public Stream GetOldFileStream(string fileName, string extension)
+ {
+ var assembly = typeof(Version_UWP).GetTypeInfo().Assembly;
+ return assembly.GetManifestResourceStream($"AideDeJeu.UWP.{fileName}.{extension}");
+ }
+ public string GetNewFilePath(string fileName, string extension)
+ {
+ var documentsDirectoryPath = Windows.Storage.ApplicationData.Current.LocalFolder.Path;
+ return Path.Combine(documentsDirectoryPath, $"{fileName}.{extension}");
+ }
+ public async Task CopyOldToNewFileAsync(string fileName, string extension)
+ {
+ using (var inStream = GetOldFileStream(fileName, extension))
+ {
+ using (var outStream = new FileStream(GetNewFilePath(fileName, extension), FileMode.Create))
{
- using (var outStream = new FileStream(path, FileMode.Create))
- {
- await inStream.CopyToAsync(outStream);
- }
+ await inStream.CopyToAsync(outStream);
}
}
- return path;
}
+
+ public async Task CheckDatabaseVersionAsync(string databaseName)
+ {
+ var path = GetNewFilePath(databaseName, "ver");
+ if (!File.Exists(path))
+ {
+ return true;
+ }
+ int newVersion = 0;
+ int oldVersion = -1;
+ using (var newStream = GetOldFileStream(databaseName, "ver"))
+ {
+ using (var sr = new StreamReader(newStream))
+ {
+ var str = await sr.ReadToEndAsync();
+ int.TryParse(str, out newVersion);
+ }
+ }
+ using (var oldStream = new FileStream(path, FileMode.Open))
+ {
+ using (var sr = new StreamReader(oldStream))
+ {
+ var str = await sr.ReadToEndAsync();
+ int.TryParse(str, out oldVersion);
+ }
+ }
+ return newVersion > oldVersion;
+ }
+
}
}
\ No newline at end of file
diff --git a/AideDeJeu/AideDeJeu.UWP/Package.appxmanifest b/AideDeJeu/AideDeJeu.UWP/Package.appxmanifest
index 6eb44114..25dcb5f2 100644
--- a/AideDeJeu/AideDeJeu.UWP/Package.appxmanifest
+++ b/AideDeJeu/AideDeJeu.UWP/Package.appxmanifest
@@ -1,6 +1,6 @@
-
+
Haches & Dés