Если у кого-то есть отзывы о том, почему мое приложение WyUpdate не хочет работать, пожалуйста, сообщите мне.
Я пытаюсь создать базовое консольное приложение, которое запускает процесс WyUpdate, а затем по завершениивыполняет мое основное приложение (которое было только что обновлено).
Следуя инструкциям на http://wyday.com/wybuild/help/silent-update-windows-service.php, мне совсем не повезло.Приложение запускается и выполняет процесс ForceCheckForUpdate, но я не получаю никакой обратной связи: (
вот полный список моего кода.
Я добавил цикл whileнадеюсь получить ответ от auBackend, но, похоже, это не сработает. Существует ли простой способ запустить процесс синхронно и дождаться ответа перед закрытием приложения?
Заранее спасибо.
using System;
using System.Threading;
using wyDay.Controls;</p>
<p>namespace NPS.CeAUpdateLauncher
{
class Program
{
private static AutomaticUpdaterBackend auBackend;
private static bool receivedFeedback;</p>
<code> static void Main(string[] args)
{
auBackend = new AutomaticUpdaterBackend
{
//TODO: set a unique string.
// For instance, "appname-companyname"
GUID = "CeALauncher_AutoUpdate",
// With UpdateType set to Automatic, you're still in
// charge of checking for updates, but the
// AutomaticUpdaterBackend continues with the
// downloading and extracting automatically.
UpdateType = UpdateType.Automatic,
};
auBackend.CheckingFailed += auBackend_CheckingFailed;
auBackend.UpdateAvailable += auBackend_UpdateAvailable;
auBackend.DownloadingFailed += auBackend_DownloadingFailed;
auBackend.ExtractingFailed += auBackend_ExtractingFailed;
auBackend.ReadyToBeInstalled += auBackend_ReadyToBeInstalled;
auBackend.UpdateSuccessful += auBackend_UpdateSuccessful;
auBackend.UpdateFailed += auBackend_Failed;
// Initialize() and AppLoaded() must be called after events have been set.
// Note: If there's a pending update to be installed, wyUpdate will be
// started, then it will talk back and say "ready to install,
// you can close now" at which point your app will be closed.
auBackend.Initialize();
auBackend.AppLoaded();
if (!auBackend.ClosingForInstall)
{
//TODO: do your normal service work
CheckForUpdates();
}
//
while(!receivedFeedback)
Thread.Sleep(10000);
}
static void CheckForUpdates()
{
// Only ForceCheckForUpdate() every N days!
// You don't want to recheck for updates on every app start.
if (//(DateTime.Now - auBackend.LastCheckDate).TotalDays > 10 &&
auBackend.UpdateStepOn == UpdateStepOn.Nothing)
{
auBackend.ForceCheckForUpdate();
}
}
static void auBackend_CheckingFailed(object sender, FailArgs e)
{
receivedFeedback = true;
}
static void auBackend_UpdateAvailable(object sender, EventArgs e)
{
receivedFeedback = true;
}
static void auBackend_DownloadingFailed(object sender, FailArgs e)
{
receivedFeedback = true;
}
static void auBackend_ExtractingFailed(object sender, FailArgs e)
{
receivedFeedback = true;
}
static void auBackend_ReadyToBeInstalled(object sender, EventArgs e)
{
// ReadyToBeInstalled event is called when
// either the UpdateStepOn == UpdateDownloaded or UpdateReadyToInstall
if (auBackend.UpdateStepOn == UpdateStepOn.UpdateReadyToInstall)
{
//TODO: Delay the installation of the update until
// it's appropriate for your app.
//TODO: Do any "spin-down" operations. auBackend.InstallNow() will
// exit this process using Environment.Exit(0), so run
// cleanup functions now (close threads, close running programs,
// release locked files, etc.)
// here we'll just close immediately to install the new version
auBackend.InstallNow();
}
receivedFeedback = true;
}
static void auBackend_UpdateSuccessful(object sender, SuccessArgs e)
{
receivedFeedback = true;
}
static void auBackend_Failed(object sender, FailArgs e)
{
receivedFeedback = true;
}
}
</code>
}