逐步解說:建立具有隱私權提示的自訂啟動載入器

您可以設定 ClickOnce 應用程式,以在具有較新檔案版本和組件版本的組件可供使用時自動更新。 若要確定您的客戶同意此行為,您可以向他們顯示隱私權提示。 然後,他們可以選擇是否要授與應用程式自動更新的權限。 如果不允許應用程式自動更新,則不會安裝。

注意

在本文的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置。 您使用的可能是不同版本的 Visual Studio 或不同的環境設定。 如需詳細資訊,請參閱將 IDE 個人化

若要顯示隱私權提示,請建立應用程式,要求讀者同意應用程式的自動更新。

  1. [檔案] 功能表上,指向 [開新檔案] ,然後按一下 [專案]

  2. 在 [新增專案] 對話方塊中,按一下 [Windows],然後按一下 [WindowsFormsApplication]

  3. 在 [名稱] 中,輸入 ConsentDialog,然後按一下 [確定]

  4. 在設計工具中,按一下表單。

  5. 在 [屬性] 視窗中,將 [文字] 屬性變更為 [更新同意對話方塊]

  6. 在 [工具箱] 中,展開 [所有 Windows Forms],然後將 [標籤] 控制項拖曳至表單。

  7. 在設計工具中,按一下標籤控制項。

  8. 在 [屬性] 視窗中,將 [外觀] 底下的 [文字] 屬性變更為下列內容:

    您即將安裝的應用程式會檢查網路上的最新更新。 按一下 [我同意],即可授權應用程式從網際網路自動檢查並安裝更新。

  9. 在 [工具箱] 中,將 [核取方塊] 控制項拖曳到表單中間。

  10. 在 [屬性] 視窗中,將 [版面配置] 底下的 [文字] 屬性變更為 [我同意]

  11. 在 [工具箱] 中,將 [按鈕] 控制項拖曳到表單左下角。

  12. 在 [屬性] 視窗中,將 [版面配置] 底下的 [文字] 屬性變更為 [繼續]

  13. 在 [屬性] 視窗中,將 [設計] 底下的 [(名稱)] 屬性變更為 [ProceedButton]

  14. 在 [工具箱] 中,將 [按鈕] 控制項拖曳到表單右下角。

  15. 在 [屬性] 視窗中,將 [版面配置] 底下的 [文字] 屬性變更為 [取消]

  16. 在 [屬性] 視窗中,將 [設計] 底下的 [(名稱)] 屬性變更為 [CancelButton]

  17. 在設計工具中,按兩下 [我同意] 核取方塊,以產生 CheckedChanged 事件處理常式。

  18. 在 Form1 程式碼檔案中,為 CheckedChanged 事件處理常式新增下列程式碼。

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        ProceedButton.Enabled = !ProceedButton.Enabled;
    }
    
  19. 更新類別建構函式,以停用預設 [繼續] 按鈕。

    public Form1()
    {
        InitializeComponent();
        ProceedButton.Enabled = false;
    }
    
  20. 在 Form1 程式碼檔案中,為布林值變數新增下列程式碼,以追蹤終端使用者是否同意線上更新。

    public bool accepted = false;
    
  21. 在設計工具中,按兩下 [繼續] 按鈕以產生 Click 事件處理常式。

  22. 在 Form1 程式碼檔案中,將下列程式碼新增至 [繼續] 按鈕的 Click 事件處理常式。

    private void ProceedButton_Click(object sender, EventArgs e)
    {
        if (ProceedButton.Enabled)
        {
            accepted = true;
            this.Close();
        }
    }
    
  23. 在設計工具中,按兩下 [取消] 按鈕以產生 Click 事件處理常式。

  24. 在 Form1 程式碼檔案中,為 [取消] 按鈕的 Click 事件處理常式新增下列程式碼。

    private void CancelButton_Click(object sender, EventArgs e)
    {
        this.Close();
    }
    
  25. 如果終端使用者不同意線上更新,請更新應用程式以傳回錯誤。

    僅適用於 Visual Basic 開發人員:

    1. 在 [方案總管] 中,按一下 [ConsentDialog]

    2. 在 [專案] 功能表上,按一下 [新增模組],然後按一下 [新增]

    3. Module1.vb 程式碼檔案中,新增下列程式碼。

      Module Module1
      
          Function Main() As Integer
              Application.EnableVisualStyles()
              Application.SetCompatibleTextRenderingDefault(False)
              Dim f As New Form1()
              Application.Run(f)
              If (Not f.accepted) Then
                  Return -1
              Else
                  Return 0
              End If
          End Function
      
      End Module
      
    4. 在 [專案] 功能表上,按一下 [ConsentDialog 屬性],然後按一下 [應用程式] 索引標籤。

    5. 取消核取 [啟用應用程式架構]

    6. 在 [啟始物件] 下拉式功能表中,選取 [Module1]

      注意

      停用應用程式架構會停用視覺樣式、應用程式事件、初始螢幕、單一執行個體應用程式等功能。 如需詳細資訊,請參閱專案設計工具、應用程式頁 (Visual Basic)

      僅適用於 Visual C# 開發人員:

      開啟 Program.cs 程式碼檔案,並加入下列程式碼。

      static int Main()
      {
          Application.EnableVisualStyles();
          Application.SetCompatibleTextRenderingDefault(false);
          Form1 f = new Form1();
          Application.Run(f);
          if (!f.accepted)
              return -1;
          else
              return 0;
      }
      
  26. 在 [建置] 功能表上,按一下 [BuildSolution]

建立自訂啟動載入器套件

若要向終端使用者顯示隱私權提示,您可以為 [更新同意對話方塊] 應用程式建立自訂啟動載入器套件,並將其納入為所有 ClickOnce 應用程式中的必要條件。

此程序示範如何藉由建立下列文件以建立自訂啟動載入器套件:

  • 用來描述啟動載入器內容的 product.xml 資訊清單檔。

  • 用來列出套件當地語系化特定層面的 package.xml 資訊清單檔,例如字串和軟體授權條款。

  • 軟體授權條款的文件。

步驟 1:建立啟動載入器目錄

  1. %PROGRAMFILES%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages 中建立名為 UpdateConsentDialog 的目錄。

    注意

    您可能需要系統管理權限才能建立此資料夾。

  2. UpdateConsentDialog 目錄中,建立名為 en 的子目錄。

    注意

    為每個地區設定建立新的目錄。 例如,您可以新增 fr 和 de 地區設定的子目錄。 如有必要,這些目錄會包含法文和德文字串和語言套件。

步驟 2:建立 product.xml 資訊清單檔

  1. 建立名為 product.xml 的文字檔。

  2. product.xml 檔案中,新增下列 XML 程式碼。 請確定您不會覆寫現有的 XML 程式碼。

    <Product
      xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
      ProductCode="Microsoft.Sample.EULA">
      <!-- Defines the list of files to be copied on build. -->
      <PackageFiles CopyAllPackageFiles="false">
        <PackageFile Name="ConsentDialog.exe"/>
      </PackageFiles>
    
      <!-- Defines how to run the Setup package.-->
      <Commands >
        <Command PackageFile = "ConsentDialog.exe" Arguments=''>
          <ExitCodes>
            <ExitCode Value="0" Result="Success" />
            <ExitCode Value="-1" Result="Fail" String="AU_Unaccepted" />
            <DefaultExitCode Result="Fail"
              FormatMessageFromSystem="true" String="GeneralFailure" />
          </ExitCodes>
        </Command>
      </Commands>
    
    </Product>
    
  3. 將檔案儲存至 UpdateConsentDialog 啟動載入器目錄。

步驟 3:建立 package.xml 資訊清單檔和軟體授權條款

  1. 建立名為 package.xml 的文字檔。

  2. package.xml 檔案中,新增下列 XML 程式碼來定義地區設定,並納入軟體授權條款。 請確定您不會覆寫現有的 XML 程式碼。

    <Package
      xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
      Name="DisplayName"
      Culture="Culture"
      LicenseAgreement="eula.rtf">
      <PackageFiles>
        <PackageFile Name="eula.rtf"/>
      </PackageFiles>
    
      <!-- Defines a localizable string table for error messages. -->
      <Strings>
        <String Name="DisplayName">Update Consent Dialog</String>
        <String Name="Culture">en</String>
        <String Name="AU_Unaccepted">The automatic update agreement is not accepted.</String>
        <String Name="GeneralFailure">A failure occurred attempting to launch the setup.</String>
      </Strings>
    </Package>
    
  3. 將檔案儲存至 UpdateConsentDialog 啟動載入器目錄中的 en 子目錄。

  4. 針對軟體授權條款建立名為 eula.rtf 的文件。

    注意

    軟體授權條款應包含授權、擔保、責任和當地法律的相關資訊。 這些檔案應該是地區設定特定的,因此請確定檔案是以支援 MBCS 或 UNICODE 字元的格式儲存。 請洽詢您的法務部門,以了解軟體授權條款的內容。

  5. 將文件儲存至 UpdateConsentDialog 啟動載入器目錄中的 en 子目錄。

  6. 如有必要,請針對每個地區設定的軟體授權條款建立新的 package.xml 資訊清單檔和新的 eula.rtf 文件。 例如,如果您建立 fr 和 de 地區設定的子目錄,請建立個別的 package.xml 資訊清單檔和軟體授權條款,並將其儲存至 fr 和 de 子目錄。

在 Visual Studio 中,您可以將更新同意應用程式設定為必要條件。

  1. 在 [方案總管] 中,按一下您要部署的應用程式名稱。

  2. 在 [專案] 功能表上,按一下[ProjectName 屬性]

  3. 按一下 [發佈] 頁面,然後按一下 [必要條件]

  4. 選取 [更新同意對話方塊]

    注意

    您可能必須關閉並重新開啟 Visual Studio,才能在 [必要條件對話方塊] 中看到 [更新同意對話方塊]。

  5. 按一下 [確定]

建立及測試安裝程式

將更新同意應用程式設定為必要條件之後,您可以為應用程式產生安裝程式和啟動載入器。

若要建立及測試安裝程式,請按一下 [我同意]

  1. 在 [方案總管] 中,按一下您要部署的應用程式名稱。

  2. 在 [專案] 功能表上,按一下[ProjectName 屬性]

  3. 按一下 [發佈] 頁面,然後按一下 [立即發佈]

  4. 如果發佈輸出未自動開啟,請瀏覽至發佈輸出。

  5. 執行 Setup.exe 程式。

    安裝程式會顯示 [更新同意對話方塊] 軟體授權合約。

  6. 閱讀軟體授權合約,然後按一下 [接受]

    [更新同意對話方塊] 應用程式隨即出現,並顯示下列文字:即將安裝的應用程式會檢查網路上的最新更新。 按一下 [我同意],您便可以授權應用程式在網際網路上自動檢查更新。

  7. 關閉應用程式,或按一下 [取消]。

    應用程式會顯示錯誤:安裝 ApplicationName 的系統元件時發生錯誤。 安裝無法繼續,直到所有系統元件都成功安裝為止。

  8. 按一下 [詳細資料] 以顯示下列錯誤訊息:[元件更新同意對話方塊] 無法安裝,並出現下列錯誤訊息:「不接受自動更新合約。」下列元件無法安裝: - 更新同意對話方塊

  9. 按一下關閉

按一下 [我同意] 來建立及測試安裝程式

  1. 在 [方案總管] 中,按一下您要部署的應用程式名稱。

  2. 在 [專案] 功能表上,按一下[ProjectName 屬性]

  3. 按一下 [發佈] 頁面,然後按一下 [立即發佈]

  4. 如果發佈輸出未自動開啟,請瀏覽至發佈輸出。

  5. 執行 Setup.exe 程式。

    安裝程式會顯示 [更新同意對話方塊] 軟體授權合約。

  6. 閱讀軟體授權合約,然後按一下 [接受]

    [更新同意對話方塊] 應用程式隨即出現,並顯示下列文字:即將安裝的應用程式會檢查網路上的最新更新。 按一下 [我同意],您便可以授權應用程式在網際網路上自動檢查更新。

  7. 按一下 [我同意],然後按一下 [繼續]

    應用程式即會開始安裝。

  8. 如果出現 [應用程式安裝] 對話方塊,請按一下 [安裝]