public static void checkForUpdates(bool silent) { RHUpdater.silent = silent; if (Custom.GetBool("removeUpdates", false)) { return; // Do not try to look for updates. } url = "http://www.PiMaker.com/updates/rh/version_windows.txt"; if (Environment.OSVersion.Platform == PlatformID.Unix) { url = "http://www.PiMaker.com/updates/rh/version_linux.txt"; } url = Custom.GetString("updateUrl", url); long lastcheck = RegMemory.GetLong("lastUpdateCheck", 0); if (silent && timeInSeconds() - lastcheck < 86400 * 7) { return; // Test only once a week silently } //if (!pingServer("176.9.149.139")) return; // No network thread = new Thread(RHUpdater.CheckThread); running = true; Main.main.checkForUpdatesToolStripMenuItem.Enabled = false; thread.Start(); }
public void Save(string fname) { if (list.Count > 0 && list.First.Value.file == fname) { return; } foreach (HistoryFile f in list) { if (f.file == fname) { list.Remove(f); break; } } list.AddFirst(new HistoryFile(fname)); while (list.Count > maxLength) { list.RemoveLast(); } // Build string string store = ""; foreach (HistoryFile f in list) { store += "|" + f.file; } RegMemory.SetString(name, store.Substring(1)); }
public FilesHistory(string id, int max) { name = id; maxLength = max; string l = RegMemory.GetString(name, ""); foreach (string fn in l.Split('|')) { if (fn.Length > 0 && File.Exists(fn)) { list.AddLast(new HistoryFile(fn)); if (list.Count == max) { break; } } } }
static public void parseVersion(string s) { string[] arr = s.Split('\n'); if (arr.Length < 4) { return; } newestVersion = arr[0].Trim(); int.TryParse(arr[1].Trim(), out newestBuildVersion); downloadUrl = arr[2].Trim(); StringBuilder b = new StringBuilder(); for (int i = 3; i < arr.Length; i++) { b.AppendLine(arr[i].Trim()); } updateText = b.ToString(); RegMemory.SetLong("lastUpdateCheck", timeInSeconds()); }
private void buttonSkipVersion_Click(object sender, EventArgs e) { RegMemory.SetInt("checkUpdateSkipBuild", newestBuildVersion); Hide(); }
private static void ReadCallBack(IAsyncResult asyncResult) { try { // Get the RequestState object from AsyncResult. RequestState rs = (RequestState)asyncResult.AsyncState; // Retrieve the ResponseStream that was set in RespCallback. Stream responseStream = rs.ResponseStream; // Read rs.BufferRead to verify that it contains data. int read = responseStream.EndRead(asyncResult); if (read > 0) { // Prepare a Char array buffer for converting to Unicode. Char[] charBuffer = new Char[BUFFER_SIZE]; // Convert byte stream to Char array and then to String. // len contains the number of characters converted to Unicode. int len = rs.StreamDecode.GetChars(rs.BufferRead, 0, read, charBuffer, 0); String str = new String(charBuffer, 0, len); // Append the recently read data to the RequestData stringbuilder // object contained in RequestState. rs.RequestData.Append( Encoding.ASCII.GetString(rs.BufferRead, 0, read)); // Continue reading data until // responseStream.EndRead returns –1. IAsyncResult ar = responseStream.BeginRead( rs.BufferRead, 0, BUFFER_SIZE, new AsyncCallback(ReadCallBack), rs); } else { if (rs.RequestData.Length > 0) { // Display data to the console. string strContent; strContent = rs.RequestData.ToString(); parseVersion(strContent); if (buildVersion < newestBuildVersion) { if (silent && RegMemory.GetInt("checkUpdateSkipBuild", 0) == newestBuildVersion) { return; // User didn't want to see this update. } Main.main.Invoke(RHUpdater.Execute); } else if (!silent) { // MessageBox.Show("No new updates available.\r\nYou are using the latest version.", "Update status", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show(Trans.T("L_NO_NEW_UPDATES"), Trans.T("L_UPDATE_STATUS"), MessageBoxButtons.OK, MessageBoxIcon.Information); } } // Close down the response stream. responseStream.Close(); // Set the ManualResetEvent so the main thread can exit. allDone.Set(); } } finally { Main.main.Invoke(RHUpdater.Finished); } return; }