方法 : Visual スタイルが有効になっている WPF アプリケーションを公開する
visual スタイルを使用すると、ユーザーが選択したテーマに基づいてコモン コントロールの外観を変更できます。 既定では、Visual スタイルは、Windows Presentation Foundation (WPF) アプリケーションで有効になっていないため、手動で有効にする必要があります。 ただし、WPF アプリケーションの Visual スタイルを有効にすると、ソリューションの公開によりエラーが発生します。 このトピックでは、このエラーを解決する方法と、Visual スタイルを有効にした WPF アプリケーションを発行するためのプロセスについて説明します。 visual スタイルの詳細については、「Visual Styles Overview」を参照してください。 エラー メッセージの詳細については、「ClickOnce 配置の固有のエラーのトラブルシューティング」を参照してください。
エラーを解決し、ソリューションを公開するには、次のタスクを実行します。
Visual スタイルを有効にせずにソリューションを公開するには。
マニフェスト ファイルの作成。
マニフェスト ファイルを発行済みソリューションの実行可能ファイルに埋め込むには。
アプリケーション マニフェストと配置マニフェストに署名します。
その後、エンド ユーザーがアプリケーションをインストールする場所に、発行されたファイルを移動できます。
Visual スタイルを有効にせずにソリューションを公開するには
プロジェクトに有効になった Visual スタイルがないことを確認します。 最初に、プロジェクトのマニフェスト ファイルに次の XML があるかチェックします。 その後、XML がある場合は、コメント タグで XML を囲みます。
既定では、Visual スタイルは有効になっていません。
<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 設定の表示] をクリックします。
コード エディターで app.manifest ファイルが開きます。
C# プロジェクトのマニフェスト ファイルを開くには
メニュー バーで [プロジェクト]、[ProjectName のプロパティ] をクリックします。ここで、ProjectName は WPF プロジェクトの名前です。
WPF プロジェクトのプロパティ ページが表示されます。
[アプリケーション] タブで、マニフェストのフィールドに表示される名前をメモします。 これは、プロジェクトに関連付けられているマニフェストの名前です。
注意
[マニフェストを既定の設定で埋め込みます] または [マニフェストなしでアプリケーションを作成する] がマニフェスト フィールドに表示されている場合、Visual スタイルは有効になりません。マニフェスト ファイルの名前がマニフェスト フィールドに表示されている場合は、この手順の次の手順に進みます。
ソリューション エクスプローラーで、[すべてのファイルを表示] をクリックします ()。
このボタンは、除外された項目や通常は表示されない項目も含め、すべてのプロジェクト項目を表示します。 マニフェスト ファイルはプロジェクト項目として表示されます。
ソリューションをビルドし、発行します。 ソリューションを発行する方法の詳細については、「方法: 発行ウィザードを使用して ClickOnce アプリケーションを発行する」を参照してください。
マニフェスト ファイルの作成
次の XML をメモ帳ファイルに貼り付けます。
この XML は、Visual スタイルをサポートするコントロールを含むアセンブリについて説明します。
<?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 コマンド プロンプト」を参照してください。
注意
残りの手順は、ソリューションに関して以下を前提とします。
-
ソリューションの名前は 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
注意
この例では、1 つのファイルだけが .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
注意
この例では、1 つのファイルだけが .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
これらの手順を実行した後、エンド ユーザーがアプリケーションをインストールする場所に、発行されたファイルを移動できます。 ソリューションを頻繁に更新する場合は、新しいバージョンを発行するたびに、スクリプトにこれらのコマンドを移動し、スクリプトを実行できます。
参照
関連項目
概念
ClickOnce 配置の固有のエラーのトラブルシューティング