HOW TO:發行已啟用視覺化樣式的 WPF 應用程式
視覺化樣式可以讓一般的控制項,以根據使用者選擇的佈景主題變更的外觀。 根據預設,已啟用視覺化樣式不 Windows Presentation Foundation (WPF) 應用程式,因此您必須以手動方式啟用它們。 不過,啟用 WPF 應用程式的視覺化樣式,然後再發行方案將導致錯誤。 本主題說明如何解決這個錯誤,並發行具有已啟用視覺化樣式的 WPF 應用程式的處理程序。 如需視覺化樣式的詳細資訊,請參閱 Visual Styles Overview。 如需有關錯誤訊息的詳細資訊,請參閱疑難排解 ClickOnce 部署的特定錯誤。
若要解決這種錯誤,並發行方案,您必須執行下列工作:
若要發行方案,而不需啟用視覺化樣式.
若要建立資訊清單檔.
若要將資訊清單檔內嵌到已發行方案的可執行檔.
若要簽署的應用程式和部署資訊清單.
然後,您可以移動已發行的檔案到您想要安裝應用程式的一般使用者的位置。
若要發行方案,而不需啟用視覺化樣式
請確定您的專案並沒有啟用視覺化樣式。 下列 XML 程式碼,第一次,檢查您的專案資訊清單檔。 然後,是否有 XML,請將註解標記與 XML。
預設情況下,將不會啟用視覺化樣式。
<dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency>
下列程序會示範如何開啟資訊清單檔與專案相關聯。
若要開啟 Visual Basic 專案中的資訊清單檔案
在功能表列上,選擇專案, ProjectName屬性,其中 ProjectName 是 WPF 專案的名稱。
WPF 專案的屬性頁會出現。
在應用程式 索引標籤上,選擇 檢視 Windows 設定。
資訊清單檔案將開啟於程式碼編輯器。
若要開啟在 C# 專案中的資訊清單檔
在功能表列上,選擇專案, ProjectName屬性,其中 ProjectName 是 WPF 專案的名稱。
WPF 專案的屬性頁會出現。
在應用程式索引標籤上,記下顯示在資訊清單的欄位的名稱。 這是與專案相關聯的資訊清單的名稱。
注意事項 如果以預設設定嵌入資訊清單 或 建立無資訊清單應用程式無法啟用視覺化樣式,則在資訊清單的欄位中,會出現。如果資訊清單檔的名稱會出現在資訊清單的欄位,則會繼續進行此程序的下一個步驟。
在方案總管] 中,選擇 顯示所有檔案 ()。
此按鈕會顯示所有的專案項目,包含已經排除以及平常隱藏的。 資訊清單檔會顯示為專案項目中。
建置及發行您的方案。 如需有關如何發行方案的詳細資訊,請參閱HOW TO:使用發行精靈發行 ClickOnce 應用程式。
若要建立資訊清單檔
將下列 XML 貼到 [記事本] 檔案上。
這個 XML 描述組件,其中包含支援視覺化樣式的控制項。
<?xml version="1.0" encoding="utf-8"?><asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency></asmv1:assembly>
在 [記事本] 中按一下 [檔案],然後按一下 [另存新檔]。
在 [另存新檔] 對話方塊的 [存檔類型] 下拉式清單中,選取 [所有檔案]。
在的檔案名稱方塊中的檔案名稱,然後附加至檔名結尾的.manifest。 例如: themes.manifest。
選擇瀏覽資料夾 按鈕、 選取任何資料夾,然後再按一下 [ 儲存。
注意事項 剩餘的程序會假設這個檔案的名稱是 themes.manifest,而且檔案 C:\temp 目錄儲存到電腦上。
若要將資訊清單檔內嵌到已發行方案的可執行檔
開啟 [Visual Studio 命令提示字元]。
如需有關如何開啟 Visual Studio 的命令提示字元,請參閱Visual Studio 和 Windows SDK 命令提示字元。
注意事項 剩下的步驟,請您的方案了如下假設:
方案的名稱是 MyWPFProject。
解決方案位於下列目錄: %UserProfile%\Documents\Visual Studio 2010\Projects\。
方案發行至下列目錄: %UserProfile%\Documents\Visual Studio 2010\Projects\publish。
發行的應用程式檔案的最新的版本位於下列目錄:%UserProfile%\Documents\Visual Studio 2010\Projects\publish\Application Files\WPFApp_1_0_0_0
您沒有使用名稱,或是上文所述的目錄位置。上述的位置與名稱僅可用於說明將方案發行所需的步驟。
在命令提示字元中,變更包含最新版的已發行的應用程式檔案的目錄的路徑。 下列範例會示範這個步驟。
cd "%UserProfile%\Documents\Visual Studio 2010\Projects\MyWPFProject\publish\Application Files\WPFApp_1_0_0_0"
在命令提示字元中,執行下列命令,將資訊清單檔內嵌至應用程式的可執行檔。
mt –manifest c:\temp\themes.manifest –outputresource:MyWPFApp.exe.deploy
若要簽署的應用程式和部署資訊清單
在命令提示字元中,執行下列命令以移除.deploy從目前的目錄中的可執行檔的副檔名。
ren MyWPFApp.exe.deploy MyWPFApp.exe
注意事項 這個範例會假設該只能有一個檔案具有.deploy副檔名。請確定您重新命名此目錄中的所有檔案具有.deploy副檔名。
在命令提示字元中,執行下列命令來簽署應用程式資訊清單。
mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx
注意事項 本範例假設您簽署資訊清單,藉由使用.pfx專案的檔案。如果您將不會簽署資訊清單,您可以省略–cf用在這個範例中的參數。如果您所簽署的憑證要求必須提供密碼的資訊清單,指定–password選項 (For example: mage –u MyWPFApp.exe.manifest –cf ..\..\..\MyWPFApp_TemporaryKey.pfx – password Password)。
在命令提示字元中,執行下列命令,以新增.deploy到您在此程序的上一個步驟中重新命名的檔案名稱的副檔名。
ren MyWPFApp.exe MyWPFApp.exe.deploy
注意事項 本範例假設只有一個檔案有.deploy副檔名。請確定您重新命名已有此目錄中的所有檔案.deploy檔案的副檔名。
在命令提示字元中,執行下列命令來簽署部署資訊清單。
mage -u ..\..\MyWPFApp.application -appm MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx
注意事項 本範例假設您簽署資訊清單,藉由使用.pfx專案的檔案。如果您將不會簽署資訊清單,您可以省略–cf用在這個範例中的參數。如果您所簽署的憑證要求必須提供密碼的資訊清單,指定–password選項,如下例所示:For example: mage –u MyWPFApp.exe.manifest –cf ..\..\..\MyWPFApp_TemporaryKey.pfx – password Password。
在執行這些步驟後,您可以移動 [已發行的檔案到您想要安裝應用程式的一般使用者的位置。 如果您打算經常更新方案,您可以將這些命令移動至指令碼,並執行指令碼每次您發行新的版本。
請參閱
參考
Enabling Visual Styles
Visual Studio 和 Windows SDK 命令提示字元