Porady: sprawdzanie aktualizacji aplikacji w sposób programowy za pomocą wdrażania interfejsu API technologii ClickOnce
ClickOnce oferuje dwa sposoby aktualizacji aplikacji po wdrożeniu.W przypadku pierwszej metody można skonfigurować wdrażania ClickOnce, aby sprawdzić, czy automatyczne aktualizacje w określonych odstępach czasu.W drugiej metody, można napisać kod, który używa ApplicationDeployment klasy, aby sprawdzić, czy są aktualizacje na podstawie zdarzenia, takiego jak żądanie użytkownika.
Następujące procedury Pokaż niektóre kod przeznaczony do wykonywania aktualizacji programowych i również opisano, jak skonfigurować Twoje wdrażania ClickOnce, aby włączyć testy aktualizacja programowych.
Do aktualizacji aplikacji ClickOnce programowo, należy określić lokalizację dla aktualizacji.Jest to czasem nazywane dostawcy wdrażania.Aby uzyskać więcej informacji na temat ustawiania tej właściwości, zobacz Wybieranie strategii aktualizacji ClickOnce.
[!UWAGA]
Można również użyć techniki opisane poniżej, aby wdrażanie aplikacji z jednej lokalizacji, ale została zaktualizowana od innej.Aby uzyskać więcej informacji, zobacz Porady: określanie alternatywnej lokalizacji aktualizacji wdrażania.
Aby sprawdzić aktualizacje programowo
Utwórz nową aplikację Windows Forms za pomocą preferowanego narzędzia wiersza polecenia lub wizualne.
Tworzenie niezależnie od przycisku, element menu lub inny element interfejsu użytkownika ma użytkowników, aby zaznaczyć, aby sprawdzić, czy są aktualizacje.Z tego elementu obsługi zdarzeń należy wywołać metodę następujące wyszukać i zainstalować aktualizacje.
Private Sub InstallUpdateSyncWithInfo() Dim info As UpdateCheckInfo = Nothing If (ApplicationDeployment.IsNetworkDeployed) Then Dim AD As ApplicationDeployment = ApplicationDeployment.CurrentDeployment Try info = AD.CheckForDetailedUpdate() Catch dde As DeploymentDownloadException MessageBox.Show("The new version of the application cannot be downloaded at this time. " + ControlChars.Lf & ControlChars.Lf & "Please check your network connection, or try again later. Error: " + dde.Message) Return Catch ioe As InvalidOperationException MessageBox.Show("This application cannot be updated. It is likely not a ClickOnce application. Error: " & ioe.Message) Return End Try If (info.UpdateAvailable) Then Dim doUpdate As Boolean = True If (Not info.IsUpdateRequired) Then Dim dr As DialogResult = MessageBox.Show("An update is available. Would you like to update the application now?", "Update Available", MessageBoxButtons.OKCancel) If (Not System.Windows.Forms.DialogResult.OK = dr) Then doUpdate = False End If Else ' Display a message that the app MUST reboot. Display the minimum required version. MessageBox.Show("This application has detected a mandatory update from your current " & _ "version to version " & info.MinimumRequiredVersion.ToString() & _ ". The application will now install the update and restart.", _ "Update Available", MessageBoxButtons.OK, _ MessageBoxIcon.Information) End If If (doUpdate) Then Try AD.Update() MessageBox.Show("The application has been upgraded, and will now restart.") Application.Restart() Catch dde As DeploymentDownloadException MessageBox.Show("Cannot install the latest version of the application. " & ControlChars.Lf & ControlChars.Lf & "Please check your network connection, or try again later.") Return End Try End If End If End If End Sub
private void InstallUpdateSyncWithInfo() { UpdateCheckInfo info = null; if (ApplicationDeployment.IsNetworkDeployed) { ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment; try { info = ad.CheckForDetailedUpdate(); } catch (DeploymentDownloadException dde) { MessageBox.Show("The new version of the application cannot be downloaded at this time. \n\nPlease check your network connection, or try again later. Error: " + dde.Message); return; } catch (InvalidDeploymentException ide) { MessageBox.Show("Cannot check for a new version of the application. The ClickOnce deployment is corrupt. Please redeploy the application and try again. Error: " + ide.Message); return; } catch (InvalidOperationException ioe) { MessageBox.Show("This application cannot be updated. It is likely not a ClickOnce application. Error: " + ioe.Message); return; } if (info.UpdateAvailable) { Boolean doUpdate = true; if (!info.IsUpdateRequired) { DialogResult dr = MessageBox.Show("An update is available. Would you like to update the application now?", "Update Available", MessageBoxButtons.OKCancel); if (!(DialogResult.OK == dr)) { doUpdate = false; } } else { // Display a message that the app MUST reboot. Display the minimum required version. MessageBox.Show("This application has detected a mandatory update from your current " + "version to version " + info.MinimumRequiredVersion.ToString() + ". The application will now install the update and restart.", "Update Available", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (doUpdate) { try { ad.Update(); MessageBox.Show("The application has been upgraded, and will now restart."); Application.Restart(); } catch (DeploymentDownloadException dde) { MessageBox.Show("Cannot install the latest version of the application. \n\nPlease check your network connection, or try again later. Error: " + dde); return; } } } } }
public: void InstallUpdateSync() { if (ApplicationDeployment::IsNetworkDeployed) { bool isUpdateAvailable = false; ApplicationDeployment^ appDeployment = ApplicationDeployment::CurrentDeployment; try { isUpdateAvailable = appDeployment->CheckForUpdate(); } catch (InvalidOperationException^ ex) { MessageBox::Show("The update check failed. Error: {0}", ex->Message); return; } if (isUpdateAvailable) { try { appDeployment->Update(); MessageBox::Show( "The application has been upgraded, and will now " + "restart."); Application::Restart(); } catch (Exception^ ex) { MessageBox::Show("The update failed. Error: {0}", ex->Message); return; } } } }
Kompilowania aplikacji.
Aby wdrożyć aplikację, która wyszukuje aktualizacje programowo przy użyciu Mage.exe
Wykonaj instrukcje dotyczące wdrażania aplikacji przy użyciu Mage.exe, jak wyjaśniono w Wskazówki: ręczne wdrażanie aplikacji ClickOnce.Podczas wywoływania Mage.exe do generowania manifestu wdrażania, upewnij się, że należy użyć przełącznika wiersza polecenia providerUrloraz aby określić adres URL, gdzie ClickOnce należy sprawdzić aktualizacje.Jeśli aplikacja zostanie zaktualizowany z http://www.adatum.com/MyApp, na przykład, zadzwonić do generowania manifestu wdrażania może wyglądać następująco:
mage -New Deployment -ToFile WindowsFormsApp1.application -Name "My App 1.0" -Version 1.0.0.0 -AppManifest 1.0.0.0\MyApp.manifest -providerUrl http://www.adatum.com/MyApp/MyApp.application
Aby wdrożyć aplikację, która wyszukuje aktualizacje programowo przy użyciu MageUI.exe
- Wykonaj instrukcje dotyczące wdrażania aplikacji przy użyciu Mage.exe, jak wyjaśniono w Wskazówki: ręczne wdrażanie aplikacji ClickOnce.Na Opcje wdrażania kartę, należy ustawić Lokalizacji uruchomić pola do manifest aplikacji ClickOnce należy sprawdzić aktualizacje.Na Opcje aktualizacji kartę, a następnie kliknij polecenie Wyczyść tej aplikacji należy sprawdzić aktualizacje pole wyboru.
Zabezpieczenia
Aplikacja musi mieć uprawnienia pełnego zaufania, aby użyć programistyczny aktualizowanie.
Zobacz też
Zadania
Porady: określanie alternatywnej lokalizacji aktualizacji wdrażania