在調用Application.Restart();
後,我開始獲取ClickOnce
設置和使用下面的代碼,最終得到應用程序的兩個實例(新更新的和先前的版本)。使用ClickOnce在更新後獲取程序的兩個實例
private static void CheckForUpdate() {
ApplicationDeployment updateCheck = ApplicationDeployment.CurrentDeployment;
UpdateCheckInfo info = updateCheck.CheckForDetailedUpdate();
if(info.UpdateAvailable) {
updateCheck.Update();
MessageBox.Show("The application has been upgraded, and will now restart.");
Application.Restart();
}
}//this has try/catch but didn't think it would be relevant
//since no exception is being thrown
這是我第一次使用點擊一次,而我在它的簡單起見,我不太知道從哪裏把人工檢查(我不希望用戶有選擇的驚訝或看到醜陋的更新窗口)。
我已將它放在我的MainForm.cs
和我的Program.cs
中,兩者的結果相同。爲了防止相關,我將包含我的Main()
。
[STAThread]
static void Main() {
CheckForUpdate();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
構造函數當我使用Click One時,我依靠應用程序檢測是否有更新的版本。但'因爲你不想讓用戶看到窗口或有選擇'我找到了你[抑制ClickOnce的啓動應用程序窗口](http://social.msdn.microsoft.com/forums/en-US/winformssetup /線程/ cd991579-bf49-4bac-b095-e1f5932a47a0 /)。如果順利,請發佈您的結果! –
我列出的代碼已經有幾個例外。這是一個異步檢查(我不擔心它延遲啓動,因爲一切都是內部的,所以它甚至不明顯),並且來自該論壇的發佈代碼也睡眠該線程1.5秒,這沒有改變發生的事情我...可悲的是 – Jared
'它是一個ASync方法' - 你嘗試用它來更新自己後啓動程序的新實例嗎?如果是這樣,恕我直言,它更好地依靠Click Once技術。 –