當具有較新版本的組件和檔案版本及組件版本推出時,您可以設定 ClickOnce 應用程式自動更新。 若要確定您的客戶同意此行為,您可以向他們顯示隱私權提示。 然後,他們可以選擇是否要授與應用程式自動更新的許可權。 如果不允許應用程式自動更新,則不會安裝。
備註
本文中的指示說明 Visual Studio 中可用的互動式開發體驗 (IDE) 最新版本。 您的電腦可能會顯示某些使用者介面元素的不同名稱或位置。 您可能使用不同的 Visual Studio 版本或不同的環境設定。 如需詳細資訊,請參閱 個人化 IDE。
建立更新同意對話框
若要顯示隱私權提示,請建立應用程式,要求讀者同意應用程式的自動更新。
若要建立同意對話框
在 [檔案] 功能表上,指向 [開新檔案] ,然後按一下 [專案] 。
在 [ 新增專案 ] 對話框中,按兩下 [Windows],然後按兩下 [ WindowsFormsApplication]。
在 [ 名稱] 中,輸入 ConsentDialog,然後按兩下 [ 確定]。
在設計工具中,點擊表單。
在 [ 屬性] 視窗中,將 [文字 ] 屬性變更為 [更新同意對話框]。
在工具箱中,展開所有 Windows Forms,然後將標籤控件拖曳至窗體。
在設計器中,點擊標籤控制項。
在 [屬性] 視窗中,將 [外觀] 底下的 Text 屬性變更為下列內容:
您即將安裝的應用程式會檢查網路上的最新更新。 按兩下 [我同意],即可授權應用程式從因特網自動檢查並安裝更新。
在 [ 工具箱] 中,將 複選框 控件拖曳到窗體中間。
在 [屬性] 視窗中,將 [版面配置] 底下的 [文字] 屬性變更為 [我同意]。
在 [ 工具箱] 中,將 按鈕 控件拖曳到窗體左下方。
在 [屬性] 視窗中,將 [版面配置] 底下的 [文字] 屬性變更為 [繼續]。
在 [屬性] 視窗中,將 [設計] 底下的 [名稱] 屬性變更為 [繼續][按鈕]。
在 [ 工具箱] 中,將 按鈕 控件拖曳到窗體右下方。
在 [屬性] 視窗中,將 [版面配置] 底下的 [文字] 屬性變更為 [取消]。
在 [屬性] 視窗中,將 [設計] 底下的 [名稱] 屬性變更為 CancelButton。
在設計工具中,按兩下 [ 我同意 ] 複選框,以產生 CheckedChanged 事件處理程式。
在 Form1 程式代碼檔案中,為 CheckedChanged 事件處理程式新增下列程序代碼。
更新類別建構函式,以預設停用 [繼續] 按鈕。
在 Form1 程式代碼檔案中,為布爾變數新增下列程式代碼,以追蹤使用者是否同意在線更新。
在設計工具中,按兩下 [ 繼續] 按鈕以產生 Click 事件處理程式。
在 Form1 程式代碼檔案中,將下列程式代碼新增至 [繼續] 按鈕的 Click 事件處理程式。
在設計工具中,按兩下 [ 取消] 按鈕以產生 Click 事件處理程式。
在 Form1 程式代碼檔案中,為 [ 取消 ] 按鈕的 Click 事件處理程式新增下列程式代碼。
如果終端使用者不同意在線更新,更新應用程式,使其返回錯誤。
僅限 Visual Basic 開發人員:
在 [方案總管] 中,按一下 [ConsentDialog]。
在 [ 專案] 功能表上,按兩下 [ 新增模組],然後按下 [ 新增]。
在 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在 [專案] 功能表上,按一下 [ConsentDialog 屬性],然後按一下 [應用程式] 索引標籤。
取消核取「啟用應用程式架構」。
在 [ 啟動物件 ] 下拉功能表中,選取 [模組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; }
在 [建置] 功能表上,按一下 [建置解決方案]。
建立自訂啟動載入器套件
若要向使用者顯示隱私權提示,您可以為 [更新同意對話框] 應用程式建立自定義啟動載入器套件,並將它納入為所有 ClickOnce 應用程式中的必要條件。
此程式示範如何藉由建立下列檔案來建立自訂啟動載入器套件:
描述啟動載入器內容的 product.xml 指令清單檔。
package.xml 清單檔案,列出套件的在地化特定內容,例如字串和軟體授權條款。
軟體授權條款的一份文件。
步驟 1:建立引導程式目錄
在 %PROGRAMFILES%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages 中建立名為 UpdateConsentDialog 的目錄。
備註
您可能需要系統管理許可權才能建立此資料夾。
在 UpdateConsentDialog 目錄中,建立名為 en 的子目錄。
備註
為每個區域建立新的目錄。 例如,您可以新增fr和 de locales 的子目錄。 如有必要,這些目錄會包含法文和德文字符串和語言套件。
步驟 2:建立 product.xml 清單文件
建立名為 product.xml的文本檔。
在 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>將檔案儲存至 UpdateConsentDialog 啟動載入器目錄。
步驟 3:建立 package.xml 指令清單檔案和軟體授權條款
建立名為 package.xml的文本檔。
在 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>將檔案儲存至 UpdateConsentDialog 啟動載入器目錄中的 en 子目錄。
針對軟體授權條款建立名為 eula.rtf 的檔。
備註
軟體授權條款應包含授權、擔保、責任和當地法律的相關信息。 這些檔案應該是地區設定特定的,因此請確定檔案是以支援 MBCS 或 UNICODE 字元的格式儲存。 請洽詢您的法律部門,瞭解軟體授權條款的內容。
將檔案儲存至 UpdateConsentDialog 啟動載入器目錄中的 en 子目錄。
如有必要,請為每個語系建立新的 package.xml 資訊清單檔案和新的 eula.rtf 文件以說明軟體授權條款。 例如,如果您為fr和de locales 建立子目錄,請建立個別 package.xml 指令清單檔案和軟體授權條款,並將其儲存至fr和 de 子目錄。
將更新同意應用程式設定為必要條件
在 Visual Studio 中,您可以將更新同意應用程式設定為必要條件。
若要將更新同意應用程式設為前置條件
在 [方案總管] 中,按下您要部署的應用程式名稱。
在 [ 專案] 功能表上,按兩下 [專案名稱屬性]。
按兩下 [ 發佈] 頁面,然後按兩下 [ 必要條件]。
選取 [更新同意] 對話框。
備註
您可能必須關閉並重新開啟 Visual Studio,才能在 [必要條件] 對話方塊中看到 [更新同意] 對話方塊。
按一下 [確定]。
建立及測試安裝程式
將更新同意應用程式設定為必要條件之後,您可以為應用程式產生安裝程式和啟動載入器。
若要建立及測試安裝程式,請不要點選 [我同意]
在 [方案總管] 中,按下您要部署的應用程式名稱。
在 [ 專案] 功能表上,按兩下 [專案名稱屬性]。
按兩下 [ 發佈] 頁面,然後按兩下 [ 立即發佈]。
如果發佈輸出未自動開啟,請流覽至發佈輸出。
執行 Setup.exe 程式。
安裝程式會顯示 [更新同意對話框] 軟體許可協定。
閱讀軟體許可協議,然後按兩下 [ 接受]。
[更新同意對話框] 應用程式隨即出現,並顯示下列文字:即將安裝的應用程式會檢查網络上的最新更新。 按兩下 [我同意],您可以授權應用程式在因特網上自動檢查更新。
關閉應用程式,或按兩下 [取消]。
應用程式會顯示錯誤:安裝 ApplicationName 的系統元件時發生錯誤。 安裝無法繼續,直到所有系統元件都成功安裝為止。
按兩下 [詳細資料] 以顯示下列錯誤訊息:元件更新同意對話框無法安裝,並出現下列錯誤訊息:「不接受自動更新合約」。下列元件無法安裝: - 更新同意對話框
按下 關閉。
點擊 [我同意] 來建立和測試設定程式
在 [方案總管] 中,按下您要部署的應用程式名稱。
在 [ 專案] 功能表上,按兩下 [專案名稱屬性]。
按兩下 [ 發佈] 頁面,然後按兩下 [ 立即發佈]。
如果發佈輸出未自動開啟,請流覽至發佈輸出。
執行 Setup.exe 程式。
安裝程式會顯示 [更新同意對話框] 軟體許可協定。
閱讀軟體許可協議,然後按兩下 [ 接受]。
[更新同意對話框] 應用程式隨即出現,並顯示下列文字:即將安裝的應用程式會檢查網络上的最新更新。 按兩下 [我同意],您可以授權應用程式在因特網上自動檢查更新。
按兩下 [我同意],然後按兩下 [ 繼續]。
應用程式會開始安裝。
如果出現 [應用程式安裝] 對話框,請按兩下 [ 安裝]。