共用方式為


操作指南:建立帶有隱私提示的自定義啟動程序

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

備註

本文中的指示說明 Visual Studio 中可用的互動式開發體驗 (IDE) 最新版本。 您的電腦可能會顯示某些使用者介面元素的不同名稱或位置。 您可能使用不同的 Visual Studio 版本或不同的環境設定。 如需詳細資訊,請參閱 個人化 IDE

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

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

  2. 在 [ 新增專案 ] 對話框中,按兩下 [Windows],然後按兩下 [ WindowsFormsApplication]。

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

  4. 在設計工具中,點擊表單。

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

  6. 工具箱中,展開所有 Windows Forms,然後將標籤控件拖曳至窗體。

  7. 在設計器中,點擊標籤控制項。

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

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

  9. 在 [ 工具箱] 中,將 複選框 控件拖曳到窗體中間。

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

  11. 在 [ 工具箱] 中,將 按鈕 控件拖曳到窗體左下方。

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

  13. 在 [屬性] 視窗中,將 [設計] 底下的 [名稱] 屬性變更為 [繼續][按鈕]。

  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. 在 [ 啟動物件 ] 下拉功能表中,選取 [模組1]。

      備註

      停用應用程式架構會停用視覺樣式、應用程式事件、啟動顯示畫面、單一實例應用程式等功能。 如需詳細資訊,請參閱 應用程式頁面、項目設計工具 (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. 在 [建置] 功能表上,按一下 [建置解決方案]。

建立自訂啟動載入器套件

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

此程式示範如何藉由建立下列檔案來建立自訂啟動載入器套件:

  • 描述啟動載入器內容的 product.xml 指令清單檔。

  • package.xml 清單檔案,列出套件的在地化特定內容,例如字串和軟體授權條款。

  • 軟體授權條款的一份文件。

步驟 1:建立引導程式目錄

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

    備註

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

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

    備註

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

步驟 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 locales 建立子目錄,請建立個別 package.xml 指令清單檔案和軟體授權條款,並將其儲存至fr和 de 子目錄。

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

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

  2. 在 [ 專案] 功能表上,按兩下 [專案名稱屬性]。

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

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

    備註

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

  5. 按一下 [確定]

建立及測試安裝程式

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

若要建立及測試安裝程式,請不要點選 [我同意]

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

  2. 在 [ 專案] 功能表上,按兩下 [專案名稱屬性]。

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

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

  5. 執行 Setup.exe 程式。

    安裝程式會顯示 [更新同意對話框] 軟體許可協定。

  6. 閱讀軟體許可協議,然後按兩下 [ 接受]。

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

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

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

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

  9. 按下 關閉

點擊 [我同意] 來建立和測試設定程式

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

  2. 在 [ 專案] 功能表上,按兩下 [專案名稱屬性]。

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

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

  5. 執行 Setup.exe 程式。

    安裝程式會顯示 [更新同意對話框] 軟體許可協定。

  6. 閱讀軟體許可協議,然後按兩下 [ 接受]。

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

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

    應用程式會開始安裝。

  8. 如果出現 [應用程式安裝] 對話框,請按兩下 [ 安裝]。