|
.NET TIPS
マニフェスト・ファイルをアプリケーションに組み込むには?
デジタルアドバンテージ
2004/11/26 |
 |
|
「TIPS:WindowsアプリケーションをWindows XPスタイルの外観にするには?」の後半では、マニフェスト・ファイルを用いたWindows XPスタイルの実装方法について解説しているが、この方法では実行ファイルとは別に、マニフェスト・ファイルが必要となる。
本稿では、マニフェスト・ファイルをアプリケーションの実行ファイルに組み込んで、1つのファイルにまとめてしまう方法について解説する。
Visual Studio .NETを利用したマニフェスト・ファイルの組み込み
Visual Stuio .NET(以下、VS.NET)を利用してマニフェスト・ファイルを組み込むための具体的な手順を以下の図にまとめた。マニフェスト・ファイルは、.NETの機能ではなくWin32システムの機能なので、Win32リソースとしてアプリケーションへ組み込む必要がある
 |
VS.NETを使ったWin32リソース(マニフェスト・ファイル)の組み込み |
Win32リソースであるマニフェスト・ファイルをアプリケーションに埋め込むには、次の手順を実行する。なおこの方法で、自作アプリケーション以外のWin32リソースを変更したり、抽出したりすると、著作権上問題になる可能性があるので注意すること。 |
|
 |
VS.NET IDEのメニューから[ファイル]−[開く]−[ファイル]を実行する。これにより、[ファイルを開く]ダイアログが表示されるので、そこでアプリケーションの実行ファイル(この例では「WindowsApplication1.exe」)を選択する。これにより、アプリケーションがWin32リソースとして開かれる(アプリケーションの実行ファイルがリソースとして開けない場合には、ダイアログの[開く]ボタンの右にある[▼]ボタンをクリックして、そこで表示されるメニューから[ファイルを開くアプリケーションの選択]をクリックする。これにより[ファイルを開くアプリケーションの選択]ダイアログが表示されるので、そこから「リソース エディタ」を選択すればよい)。 |
|
 |
リソース・エディタに表示されたアプリケーションの実行ファイル(この例では「WindowsApplication1.exe」)を右クリックしてコンテキスト・メニューを表示し、そのメニューから[リソースの追加]を選択する。これにより、[リソースの追加]ダイアログが表示される。 |
|
 |
[リソースの追加]ダイアログの[インポート]ボタンをクリックすると、[インポート]ダイアログ([ファイルを開く]ダイアログと同じ形式)が表示されるので、このダイアログで作成済みのマニフェスト・ファイル(本稿の例では「WindowsApplication1.exe.manifest」)を選択する。これにより[カスタム リソース の種類]ダイアログが表示される。 |
|
 |
[カスタム リソース の種類]ダイアログで、[リソースの種類]として「RT_MANIFEST」を入力して[OK]ボタンをクリックする。 |
|
 |
「RT_MANIFEST」という種類のリソースとしてマニフェスト・ファイルがアプリケーションに追加される。 |
|
 |
「RT_MANIFEST」リソースのIDを「1」に変更してアプリケーションの実行ファイルを保存する。 |
|
上記の手順を行い、リソースが追加された実行ファイル(.exeファイル)を実行すると、Windows XPスタイルが適用されているはずだ。
マニフェスト・ファイル組み込みの自動化
VS.NET(Visual C# .NETおよびVisual Basic .NET)は、.NET用の開発環境である。そのため、Win32リソースであるマニフェスト・ファイルの組み込みをVS.NETで自動化することは難しい。しかし、コマンドラインでビルドを行えば、これを簡単に自動化することができる。
具体的には、次のコマンドラインの例(VS.NETで自動生成したWindowsアプリケーションのプロジェクトの場合)のように、Win32リソース用のオプション(C#では「/win32res」オプション、VB.NETでは「/win32resource」オプション)を指定してビルドを行えばよい。
// C#の場合
csc.exe /win32res:WindowsApplication1.res /resource:Form1.resources,WindowsApplication1.Form1.resources /target:winexe /out:StyleWinXP.exe Form1.cs AssemblyInfo.cs
|
' VB.NETの場合
vbc.exe /win32resource:WindowsApplication1.res /resource:Form1.resources,WindowsApplication1.Form1.resources /rootnamespace:WindowsApplication1 /target:winexe /out:StyleWinXP.exe /reference:System.dll /reference:System.Windows.Forms.dll /reference:System.Drawing.dll /imports:System.Windows.Forms Form1.vb AssemblyInfo.vb
|
Win32リソース・オプションに指定するWin32リソース・ファイル(.resファイル。本稿の例では「WindowsApplication1.res」)は、次の画面の手順により作成できる。
 |
VS.NETを使ったWin32リソース・ファイル(.resファイル)の作成 |
Win32リソースであるマニフェスト・ファイルをアプリケーションに埋め込むには、Win32リソース・ファイル(.resファイル)を作成する必要がある。VS.NETでこれを作成するには、次の手順を実行する(作業手順は「VS.NETを使ったWin32リソース(マニフェスト・ファイル)の組み込み」の手順とほぼ同じ)。 |
|
 |
VS.NET IDEのメニューから[ファイル]−[新規作成]−[ファイル]を実行して、[新しいファイル]ダイアログを開く。そのダイアログの[Visual C++]カテゴリの[テンプレート]の一覧から「リソース テンプレート ファイル(rct)」を選択してファイルを作成する。 |
|
 |
リソース・エディタに表示されたリソース・テンプレート・ファイル(.rctファイル。この例では「ResTempl1.rct」)を選択する。 |
|
 |
リソース・テンプレート・ファイルが選択された状態で[プロパティ]ウィンドウの[Mfc Mode]プロパティを「False」に設定変更する。 |
|
 |
リソース・テンプレート・ファイルを右クリックしてコンテキスト・メニューを表示し、そのメニューから[リソースの追加]を選択する。これにより、[リソースの追加]ダイアログが表示される。 |
|
 |
[リソースの追加]ダイアログの[インポート]ボタンをクリックすると、[インポート]ダイアログ([ファイルを開く]ダイアログと同じ形式)が表示されるので、このダイアログで作成済みのマニフェスト・ファイル(本稿の例では「WindowsApplication1.exe.manifest」)を選択する。これにより[カスタム リソース の種類]ダイアログが表示される。[カスタム リソース の種類]ダイアログで、[リソースの種類]として「RT_MANIFEST」を入力して[OK]ボタンをクリックする。 |
|
 |
「RT_MANIFEST」という種類のリソースとしてマニフェスト・ファイルがリソース・テンプレート・ファイルに追加される。その「RT_MANIFEST」リソースを選択して、[プロパティ]ウィンドウの[ID]プロパティを「1」に変更する。 |
|
以上でWin32リソースの作成は完了だ。後は次の画面の手順で、これをWin32リソース・ファイル(.resファイル)として保存すればよい。ここで注意してほしいのは、必ず.resファイルの形式で保存する必要があるということだ。次の画面でその手順を示す。
 |
Win32リソース・ファイル(.resファイル)の保存 |
リソース・テンプレート・ファイル(.rctファイル。この例では「ResTempl1.rct」)をWin32リソース・ファイル(.resファイル。この例では「WindowsApplication1.res」)として保存する。この[名前を付けてファイルを保存]ダイアログを開くには、VS.NET IDEのメニューから[ファイル]−[名前を付けて <拡張子を除くファイル名> を保存](本稿の例では[名前を付けて ResTempl1 を保存])を選択すればよい。 |
|
 |
保存するWin32リソース・ファイルの名前(この例では「WindowsApplication1.res」)を指定する。 |
|
 |
[ファイルの種類]は「32 ビット リソース ファイル (*.res)」を選択する。デフォルトでは違う種類(「リソース テンプレート (*.rct)」)になっているので、間違えないように注意すること。 |
|
以上の手順で作成したVS.NETのサンプル・プロジェクトは、次のリンクからダウンロードできる。
プロジェクトをビルドするためのコマンドライン内容は、バッチ・ファイル「BuildScript.bat」にまとめている。このバッチ・ファイルを実行すると、Win32リソース・ファイルを埋め込んだアプリケーション「StyleWinXP.exe」と、埋め込んでいないアプリケーション「StyleClassic.exe」が生成される。
|
generated by
|
|
更新履歴 |
【2004/11/26】本記事の一部に以下のような誤りがありました。お詫びして訂正させていただきます。
誤 |
// C#の場合
csc.exe /win32res:WindowsApplication1.res /resource:Form1.resx /target:winexe /out:StyleWinXP.exe Form1.cs AssemblyInfo.cs
|
正 |
// C#の場合
csc.exe /win32res:WindowsApplication1.res /resource:Form1.resources,WindowsApplication1.Form1.resources /target:winexe /out:StyleWinXP.exe Form1.cs AssemblyInfo.cs
|
誤 |
' VB.NETの場合
vbc.exe /win32resource:WindowsApplication1.res /resource:Form1.resx /target:winexe /out:StyleWinXP.exe /reference:System.dll /reference:System.Windows.Forms.dll /reference:System.Drawing.dll /imports:System.Windows.Forms Form1.vb AssemblyInfo.vb |
正 |
' VB.NETの場合
vbc.exe /win32resource:WindowsApplication1.res /resource:Form1.resources,WindowsApplication1.Form1.resources /rootnamespace:WindowsApplication1 /target:winexe /out:StyleWinXP.exe /reference:System.dll /reference:System.Windows.Forms.dll /reference:System.Drawing.dll /imports:System.Windows.Forms Form1.vb AssemblyInfo.vb
|
|
|
Insider.NET 記事ランキング
本日
月間