2014-09-03 1 views
1

У меня есть приложение, которое я развертываю с помощью ClickOnce. Я использую метод по умолчанию InstallUpdateUpdateSyncWithInfo(), предоставленный here. Я сделал два изменения; Я сделал метод общедоступным и статическим, поскольку я вызываю его из статического класса. Я знаю плохие практики. Это какой-то ленивый код, чтобы попробовать ClickOnce.Как предотвратить загрузку двух экземпляров моего приложения после обновления с помощью ClickOnce?

Каждый раз, когда приложение обновляет его, загружается два экземпляра: старый и новый.

Кроме этого, хотя я вызываю метод в моих App.xaml.cs так:

public partial class App : Application 
{ 
    private void Application_Startup(object sender, StartupEventArgs e) 
    { 
     MainWindow window = new MainWindow(); 
     CheckForUpdates.InstallUpdateSyncWithInfo(); 
     window.Show(); 
    } 
} 

Я подумал, что если я называю Window.Show() после проверки на наличие обновлений было бы вызвать метод Application.Restart() в InstallUpdateUpdateSyncWithInfo() перед тем старая версия может загружаться, но это не так.

Кто-нибудь знает, как я могу предотвратить загрузку двух экземпляров моего приложения после обновления приложения?

Был another post on Stack Overflow, который из названия, я думал, будет напрямую решать этот вопрос, но я не видел, как плакат изменил свой код, чтобы предотвратить загрузку двух экземпляров.

ответ

2

Вам не нужно писать код автообновления самостоятельно. Во-первых, я удалю ваш код обновления.

Далее щелкните правой кнопкой мыши проект C# и выберите Properties. Затем перейдите к Publish и нажмите Updates.... Установите флажок, чтобы ваше приложение проверяло наличие обновлений, а ClickOnce будет обрабатывать остальные.