В итоге я использовал API развертывания ClickOnce, где у меня гораздо больше контроля над процессом.Хитрость заключается в том, чтобы установить приложение как приложение CD-ROM, которое работает на 100% в автономном режиме.Затем, используя простой код ClickOnce, можно выполнить автоматическое обновление.
private void Update()
{
try
{
ApplicationDeployment.CurrentDeployment.CheckForUpdateCompleted += new CheckForUpdateCompletedEventHandler(CurrentDeployment_CheckForUpdateCompleted);
ApplicationDeployment.CurrentDeployment.UpdateCompleted += new System.ComponentModel.AsyncCompletedEventHandler(CurrentDeployment_UpdateCompleted);
ApplicationDeployment.CurrentDeployment.CheckForUpdateAsync();
}
catch (Exception)
{
}
}
void CurrentDeployment_CheckForUpdateCompleted(object sender, CheckForUpdateCompletedEventArgs e)
{
try
{
if (e.UpdateAvailable)
{
ApplicationDeployment.CurrentDeployment.UpdateAsync();
}
}
catch (InvalidOperationException)
{
}
}
void CurrentDeployment_UpdateCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
//TODO: update completion code here
}