diff --git a/EnvyUpdate/DashboardPage.xaml b/EnvyUpdate/DashboardPage.xaml index 3761bf6..546b018 100644 --- a/EnvyUpdate/DashboardPage.xaml +++ b/EnvyUpdate/DashboardPage.xaml @@ -77,11 +77,11 @@ - + - + diff --git a/EnvyUpdate/DashboardPage.xaml.cs b/EnvyUpdate/DashboardPage.xaml.cs index f6ec952..78258b7 100644 --- a/EnvyUpdate/DashboardPage.xaml.cs +++ b/EnvyUpdate/DashboardPage.xaml.cs @@ -112,10 +112,10 @@ namespace EnvyUpdate switchStudioDriver.IsChecked = false; } - if (File.Exists(GlobalVars.exedirectory + "skip.envy")) + if (File.Exists(Path.Combine(GlobalVars.saveDirectory,"skip.envy"))) { Debug.LogToFile("INFO Found version skip config."); - skippedVer = File.ReadLines(GlobalVars.exedirectory + "skip.envy").First(); + skippedVer = File.ReadLines(Path.Combine(GlobalVars.saveDirectory, "skip.envy")).First(); } // This little bool check is necessary for debug fake mode. @@ -137,9 +137,9 @@ namespace EnvyUpdate try { // disable SD and try with GRD - if (File.Exists(GlobalVars.exedirectory + "sd.envy")) + if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "sd.envy"))) { - File.Delete(GlobalVars.exedirectory + "sd.envy"); + File.Delete(Path.Combine(GlobalVars.saveDirectory, "sd.envy")); } gpuURL = Util.GetGpuUrl(); //try again with GRD @@ -226,15 +226,15 @@ namespace EnvyUpdate { Debug.LogToFile("INFO Skipped version is surpassed, deleting setting."); skippedVer = null; - if (File.Exists(GlobalVars.exedirectory + "skip.envy")) - File.Delete(GlobalVars.exedirectory + "skip.envy"); + if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "skip.envy"))) + File.Delete(Path.Combine(GlobalVars.saveDirectory, "skip.envy")); buttonSkipVersion.ToolTip = Properties.Resources.ui_skipversion; buttonSkipVersion.IsEnabled = true; buttonSkipVersion.Visibility = Visibility.Visible; } // Check if update file already exists and display install button instead - if (File.Exists(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe"))) + if (File.Exists(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe"))) { Debug.LogToFile("INFO Found downloaded driver installer, no need to redownload."); buttonDownload.Visibility = Visibility.Collapsed; @@ -244,20 +244,20 @@ namespace EnvyUpdate private void switchStudioDriver_Unchecked(object sender, RoutedEventArgs e) { - if (File.Exists(GlobalVars.exedirectory + "sd.envy")) + if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "sd.envy"))) { Debug.LogToFile("INFO Switching to game ready driver."); - File.Delete(GlobalVars.exedirectory + "sd.envy"); + File.Delete(Path.Combine(GlobalVars.saveDirectory, "sd.envy")); Load(); } } private void switchStudioDriver_Checked(object sender, RoutedEventArgs e) { - if (!File.Exists(GlobalVars.exedirectory + "sd.envy")) + if (!File.Exists(Path.Combine(GlobalVars.saveDirectory, "sd.envy"))) { Debug.LogToFile("INFO Switching to studio driver."); - File.Create(GlobalVars.exedirectory + "sd.envy").Close(); + File.Create(Path.Combine(GlobalVars.saveDirectory, "sd.envy")).Close(); Load(); } } @@ -272,7 +272,7 @@ namespace EnvyUpdate if (switchAutostart.IsChecked == true) { Debug.LogToFile("INFO Creating autostart entry."); - Util.CreateShortcut("EnvyUpdate", Environment.GetFolderPath(Environment.SpecialFolder.Startup), GlobalVars.exeloc, "NVidia Update Checker", "/minimize"); + Util.CreateShortcut("EnvyUpdate", Environment.GetFolderPath(Environment.SpecialFolder.Startup), GlobalVars.pathToAppExe, "NVidia Update Checker", "/minimize"); } } @@ -280,7 +280,7 @@ namespace EnvyUpdate { Debug.LogToFile("INFO Skipping version."); skippedVer = onlineDriv; - File.WriteAllText(GlobalVars.exedirectory + "skip.envy", onlineDriv); + File.WriteAllText(Path.Combine(GlobalVars.saveDirectory, "skip.envy"), onlineDriv); buttonSkipVersion.IsEnabled = false; buttonSkipVersion.ToolTip = Properties.Resources.ui_skipped; MessageBox.Show(Properties.Resources.skip_confirm); @@ -343,10 +343,10 @@ namespace EnvyUpdate progressbarDownload.Visibility = Visibility.Visible; buttonDownload.IsEnabled = false; - if (File.Exists(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading"))) + if (File.Exists(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading"))) { Debug.LogToFile("WARN Found previous unfinished download, retrying."); - File.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading")); + File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading")); } Thread thread = new Thread(() => { using (WebClient client = new WebClient()) @@ -354,7 +354,7 @@ namespace EnvyUpdate client.Headers["User-Agent"] = GlobalVars.useragent; client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged); client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted); - client.DownloadFileAsync(new Uri(Util.GetDirectDownload(gpuURL)), Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading")); + client.DownloadFileAsync(new Uri(Util.GetDirectDownload(gpuURL)), Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading")); } }); thread.Start(); @@ -385,13 +385,13 @@ namespace EnvyUpdate buttonInstall.Visibility = Visibility.Visible; Debug.LogToFile("INFO Download successful."); })); - if (File.Exists(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe"))) - File.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe")); - File.Move(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading"), Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe")); + if (File.Exists(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe"))) + File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe")); + File.Move(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading"), Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe")); } else { - File.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe.downloading")); + File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe.downloading")); Application.Current.Dispatcher.Invoke(new Action(() => { ShowSnackbar(Wpf.Ui.Common.ControlAppearance.Danger, Wpf.Ui.Common.SymbolRegular.ErrorCircle24, Properties.Resources.info_download_error, Properties.Resources.info_download_error_title); Debug.LogToFile("INFO Download NOT successful. Error: " + e.Error.ToString()); @@ -406,8 +406,8 @@ namespace EnvyUpdate ShowSnackbar(Wpf.Ui.Common.ControlAppearance.Info, Wpf.Ui.Common.SymbolRegular.FolderZip24, Properties.Resources.info_extracting, Properties.Resources.info_extracting_title); - string filePath = Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe"); - string destinationDir = Path.Combine(GlobalVars.exedirectory, onlineDriv + "-extracted"); + string filePath = Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe"); + string destinationDir = Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-extracted"); if (!Directory.Exists(destinationDir)) Directory.CreateDirectory(destinationDir); @@ -430,13 +430,13 @@ namespace EnvyUpdate private void ExtractionFinished(object sender, EventArgs e) { - string extractedPath = Path.Combine(GlobalVars.exedirectory, onlineDriv + "-extracted"); + string extractedPath = Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-extracted"); Application.Current.Dispatcher.Invoke(new Action(() => { ShowSnackbar(Wpf.Ui.Common.ControlAppearance.Success, Wpf.Ui.Common.SymbolRegular.FolderZip24, Properties.Resources.info_extract_complete, Properties.Resources.info_extract_complete_title); })); Debug.LogToFile("INFO Extraction exited, deleting 7-zip executable."); - File.Delete(Path.Combine(GlobalVars.exedirectory, "7zr.exe")); + File.Delete(Path.Combine(GlobalVars.saveDirectory, "7zr.exe")); Util.CleanInstallConfig(Path.Combine(extractedPath, "setup.cfg")); @@ -468,8 +468,8 @@ namespace EnvyUpdate Debug.LogToFile("INFO Driver setup complete. Cleaning up setup files."); - File.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-nvidia-installer.exe")); - Directory.Delete(Path.Combine(GlobalVars.exedirectory, onlineDriv + "-extracted"), true); + File.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-nvidia-installer.exe")); + Directory.Delete(Path.Combine(GlobalVars.saveDirectory, onlineDriv + "-extracted"), true); GlobalVars.isInstalling = false; Application.Current.Dispatcher.Invoke(delegate { diff --git a/EnvyUpdate/Debug.cs b/EnvyUpdate/Debug.cs index 43e54b9..35e6e04 100644 --- a/EnvyUpdate/Debug.cs +++ b/EnvyUpdate/Debug.cs @@ -15,9 +15,6 @@ namespace EnvyUpdate public static bool isVerbose = false; #endif - - public static string debugFile = Path.Combine(GlobalVars.exedirectory, "envyupdate.log"); - public static int LoadFakeIDs(string idType) { /* @@ -52,7 +49,12 @@ namespace EnvyUpdate public static void LogToFile(string content) { if (isVerbose) - System.IO.File.AppendAllText(Debug.debugFile, content + "\n"); + { + if (GlobalVars.useAppdata) + File.AppendAllText(Path.Combine(GlobalVars.appdata, "envyupdate.log"), content + "\n"); + else + File.AppendAllText(Path.Combine(GlobalVars.directoryOfExe, "envyupdate.log"), content + "\n"); + } } } } diff --git a/EnvyUpdate/GlobalVars.cs b/EnvyUpdate/GlobalVars.cs index e9dfd32..e830039 100644 --- a/EnvyUpdate/GlobalVars.cs +++ b/EnvyUpdate/GlobalVars.cs @@ -6,14 +6,18 @@ namespace EnvyUpdate class GlobalVars { public static bool isMobile = false; - public static readonly string exeloc = System.Reflection.Assembly.GetEntryAssembly().Location; - public static readonly string exedirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\\"; + public static readonly string pathToAppExe = System.Reflection.Assembly.GetEntryAssembly().Location; + public static readonly string directoryOfExe = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location); + public static string saveDirectory = directoryOfExe; public static readonly string startmenu = Environment.GetFolderPath(Environment.SpecialFolder.StartMenu); - public static readonly string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\envyupdate\\"; + public static readonly string legacyAppdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\envyupdate\\"; + public static readonly string appdata = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "EnvyUpdate_Data"); public static readonly string startup = Environment.GetFolderPath(Environment.SpecialFolder.Startup); public static bool monitoringInstall = false; public static bool startMinimized = false; public static bool isInstalling = false; public static readonly string useragent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:115.0) Gecko/20100101 Firefox/115.0"; + public static bool useAppdata = false; + public static bool hasWrite = true; } } diff --git a/EnvyUpdate/MainWindow.xaml.cs b/EnvyUpdate/MainWindow.xaml.cs index 44b8a6d..51fc08c 100644 --- a/EnvyUpdate/MainWindow.xaml.cs +++ b/EnvyUpdate/MainWindow.xaml.cs @@ -28,8 +28,22 @@ namespace EnvyUpdate // This is necessary, since .NET throws an exception if you check for a non-existant arg. } + if (!Util.HasWritePermissions()) + { + if (!Directory.Exists(GlobalVars.appdata)) + Directory.CreateDirectory(GlobalVars.appdata); + + GlobalVars.hasWrite = false; + } + + if (Directory.Exists(GlobalVars.appdata)) + { + GlobalVars.useAppdata = true; + GlobalVars.saveDirectory = GlobalVars.appdata; + } + // Check if Debug file exists - if (File.Exists(Path.Combine(GlobalVars.exedirectory, "envyupdate.log"))) + if (File.Exists(Path.Combine(GlobalVars.saveDirectory, "envyupdate.log"))) { Debug.isVerbose = true; Debug.LogToFile("------"); @@ -37,6 +51,7 @@ namespace EnvyUpdate } Debug.LogToFile("INFO Starting EnvyUpdate, version " + System.Diagnostics.FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion); + Debug.LogToFile("INFO Save directory: " + GlobalVars.saveDirectory); // Check if running on supported Windows version. if (Environment.OSVersion.Version.Major < 10) @@ -60,9 +75,9 @@ namespace EnvyUpdate SystemEvents.UserPreferenceChanged += AdjustTheme; // Delete installed legacy versions, required for people upgrading from very old versions. - if (Directory.Exists(GlobalVars.appdata)) + if (Directory.Exists(GlobalVars.legacyAppdata)) { - Debug.LogToFile("INFO Found old appdata installation, uninstalling."); + Debug.LogToFile("INFO Found legacy appdata installation, uninstalling."); Util.UninstallAll(); } diff --git a/EnvyUpdate/Properties/Resources.Designer.cs b/EnvyUpdate/Properties/Resources.Designer.cs index a22ae7c..4f80cf9 100644 --- a/EnvyUpdate/Properties/Resources.Designer.cs +++ b/EnvyUpdate/Properties/Resources.Designer.cs @@ -258,6 +258,15 @@ namespace EnvyUpdate.Properties { } } + /// + /// Looks up a localized string similar to Save files to AppData. + /// + public static string ui_enable_appdata { + get { + return ResourceManager.GetString("ui_enable_appdata", resourceCulture); + } + } + /// /// Looks up a localized string similar to Enable logging to file. /// diff --git a/EnvyUpdate/Properties/Resources.de.resx b/EnvyUpdate/Properties/Resources.de.resx index cb58d0d..40102a4 100644 --- a/EnvyUpdate/Properties/Resources.de.resx +++ b/EnvyUpdate/Properties/Resources.de.resx @@ -183,6 +183,9 @@ Herunterladen + + Programmdaten in AppData speichern + Programm-Log in Datei schreiben diff --git a/EnvyUpdate/Properties/Resources.resx b/EnvyUpdate/Properties/Resources.resx index f9f99e7..3780249 100644 --- a/EnvyUpdate/Properties/Resources.resx +++ b/EnvyUpdate/Properties/Resources.resx @@ -183,6 +183,9 @@ Download + + Save files to AppData + Enable logging to file diff --git a/EnvyUpdate/SettingsPage.xaml b/EnvyUpdate/SettingsPage.xaml index 527bd97..f00cd4b 100644 --- a/EnvyUpdate/SettingsPage.xaml +++ b/EnvyUpdate/SettingsPage.xaml @@ -15,7 +15,8 @@ - + + @@ -34,8 +35,12 @@ -