共用方式為


使用 ClickOnce 部署 API 以程式設計的方式檢查應用程式更新

ClickOnce 提供兩種方式,可在應用程式部署後更新應用程式。 在第一種方法中,您可以設定 ClickOnce 部署,在特定間隔自動檢查更新。 在第二個方法中,您可以撰寫使用 ApplicationDeployment 類別的程式碼,根據事件來檢查更新,例如使用者要求。

注意

.NET Core 和 .NET 5 和更新版本中不支援 System.Deployment.Application 命名空間中的 ApplicationDeployment 類別和 API。 .NET 7 支援存取應用程式部署屬性的新方法。 如需詳細資訊,請參閱在 .NET 中存取 ClickOnce 部署屬性。 .NET 7 不支援 ApplicationDeployment 方法的同等項。

下列程序顯示執行程式設計更新的一些程式碼,也說明如何設定 ClickOnce 部署以啟用程式設計更新檢查。

若要以程式設計方式更新 ClickOnce 應用程式,您必須指定更新的位置。 這有時也稱為部署提供者。 如需設定此屬性的詳細資訊,請參閱選擇 ClickOnce 更新策略

注意

您也可以使用以下所述的技術,從某個位置部署應用程式,但是從另一個位置進行更新。 如需詳細資訊,請參閱如何:指定部署更新的其他位置

以程式設計方式檢查更新

  1. 使用您慣用的命令列或視覺效果工具建立新的 Windows Forms 應用程式。

  2. 建立您想要使用者選取以檢查更新的任何按鈕、功能表項目或其他使用者介面項目。 從該項目的事件處理常式中,呼叫下列方法來檢查並安裝更新。

    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;
                    }
                }
            }
        }
    }
    
  3. 編譯您的應用程式。

使用 Mage.exe 部署應用程式,以程式設計方式檢查更新

  • 請遵循使用 Mage.exe 部署應用程式的指示,如逐步解說:手動部署 ClickOnce 應用程式中所述。 呼叫 Mage.exe 以產生部署資訊清單時,請務必使用命令列參數 providerUrl,並指定 ClickOnce 應該檢查更新的 URL。 舉例來說,如果您的應用程式會從 http://www.adatum.com/MyApp 更新,產生部署資訊清單的呼叫可能如下所示:

    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
    

使用 MageUI.exe 部署應用程式,以程式設計方式檢查更新

  • 請遵循使用 Mage.exe 部署應用程式的指示,如逐步解說:手動部署 ClickOnce 應用程式中所述。 在 [部署選項] 索引標籤上,將 [開始位置] 欄位設定為應用程式資訊清單 ClickOnce 應該檢查更新。 在 [更新選項] 索引標籤上,清除 [此應用程式應該檢查更新] 核取方塊。

.NET Framework 安全性

您的應用程式必須有完全信任權限才能使用程式設計更新。