static void TryDownloadUpdatePackage(string currVersion) { Task.Run(() => { bool updateAvailable = false; try { if (KivaUpdates.GetLatestVersion() != currVersion) { updateAvailable = true; } } catch { } if (updateAvailable) { UpdateDownloading = true; try { var data = KivaUpdates.DownloadAssetData(KivaUpdates.DataAssetName); var dest = File.OpenWrite(KivaUpdates.DefaultUpdatePackagePath); data.CopyTo(dest); data.Close(); dest.Close(); UpdateReady = true; UpdateDownloading = false; } catch (Exception e) { MessageBox.Show("Couldn't download and save update package", "Update failed"); UpdateDownloading = false; } } }); }
public static void FinalizeInstall() { KivaUpdates.WriteVersionSettings(KivaUpdates.GetLatestVersion(), true, true); KivaUpdates.CopySelfInside(KivaUpdates.InstallerPath); KivaUpdates.CreateStartShortcut(); KivaUpdates.CreateUninstallScript(); KivaUpdates.CreateDesktopShortcut(); }
static void Main(string[] args) { try { KivaUpdates.KillAllKivas(); bool reopen = false; string reopenArg = ""; if (args.Length == 0) { reopen = true; NormalInstall(); } else { string command = args[0]; if (!new[] { "install", "update", "uninstall" }.Contains(command)) { Console.WriteLine("Invalid command " + command); return; } string packagePath = KivaUpdates.DefaultUpdatePackagePath; for (int i = 1; i < args.Length; i++) { if (args[i] == "-Silent") { Silent = true; } if (args[i] == "-PackagePath") { if (command != "update") { Console.WriteLine("-PackagePath flag only allowed on update command"); return; } i++; if (i == args.Length) { Console.WriteLine("path expected after -PackagePath"); return; } packagePath = args[i]; } if (args[i] == "-ReopenArg") { if (command == "uninstall") { Console.WriteLine("-ReopenArg flag not allowed on uninstall command"); return; } i++; if (i == args.Length) { Console.WriteLine("argument expected after -ReopenArg"); return; } reopenArg = args[i]; } if (args[i] == "-Reopen") { if (command == "uninstall") { Console.WriteLine("-Reopen flag not allowed on uninstall command"); return; } reopen = true; } } if (command == "install") { if (Silent) { SilentInstall(); } else { NormalInstall(); } } if (command == "update") { UpdateFromPackage(packagePath); KivaUpdates.WriteVersionSettings(KivaUpdates.GetLatestVersion(), true, true); } if (command == "uninstall") { KivaUpdates.DeleteStartShortcut(); KivaUpdates.DeleteDesktopShortcut(); KivaUpdates.DeleteKivaFolder(); if (!Silent) { MessageBox.Show("Successfully uninstalled Kiva!"); } } } if (reopen) { string kivaPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Kiva/Kiva.exe"); if (reopenArg == "") { Process.Start(new ProcessStartInfo() { FileName = kivaPath, WorkingDirectory = Path.GetDirectoryName(kivaPath) }); } else { Process.Start(new ProcessStartInfo() { FileName = kivaPath, WorkingDirectory = Path.GetDirectoryName(kivaPath), Arguments = "\"" + reopenArg + "\"" }); } } } catch (Exception e) { if (!Silent) { string msg = e.Message + "\n" + e.Data + "\n"; msg += e.StackTrace; MessageBox.Show(msg, "Kiva installer has crashed!"); } } }