■9880 / inTopicNo.1) |
インストーラのVista対応 |
□投稿者/ marumaru (1回)-(2007/11/06(Tue) 15:40:38)
|
分類:[C#]
初めまして。 お世話になります。
現在 VisualStudio2005 .NET C#で開発しております。
セットアップツール(msi形式のインストーラ)についてXPからのVista対応を現在行ってます。 msiのインストーラについては、内部でexeを3つ呼ぶ形となってるのですが、あるexeに関して「管理者として実行」をする必要があります。
Vista環境では右クリックで「管理者として実行」というのが追加されましたが、msi形式のインストーラでは右クリックで「管理者として実行」はできません。
その対応を現在行ってて、いろいろと調べた結果、マニフィストファイルを作成してmt.exeを使う方法で対応しようと考えています。
このHPの「マネージコード (Visual Basic、C#、J# ) でマニフェストを埋め込むには」を参考に行ってます。 http://72.14.235.104/search?q=cache:5_E6sKhxv2kJ:download.microsoft.com/download/3/4/4/3448ddf3-ca22-45bd-9984-1237e8ed0019/Windows_Vista_application_compatibility_paper.doc+%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E3%83%9E%E3%83%8B%E3%83%95%E3%82%A7%E3%82%B9%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B&hl=ja&ct=clnk&cd=4&gl=jp&lr=lang_ja
簡単な手順としては、 @Visual Studio 2005 でプロジェクトを作成し、ビルドします。
A「level="requireAdministrator"」属性を含むマニフェストファイルをテキストエディタなどで作成します。ファイル名は任意のもので構いません。ファイルの内容は、「埋め込みマニフェストを作成するには」の手順で紹介した Xml に似ていますが、名前空間の重複を避ける必要があるため、名前空間を別途指定する必要があります。以下にサンプルを示します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2"> <ms_asmv2:security> <ms_asmv2:requestedPrivileges> <ms_asmv2:requestedExecutionLevel level="requireAdministrator"> </ms_asmv2:requestedExecutionLevel> </ms_asmv2:requestedPrivileges> </ms_asmv2:security> </ms_asmv2:trustInfo></assembly>
B「mt.exe」コマンドを使用してマネージコードにアプリケーションマニフェストを埋め込みます。以下の例は、「IsUserAdmin.exe」アプリケーションに、「IsUserAdmin.manifest」で定義されたアプリケーションマニフェストを埋め込む例です。 mt.exe -manifest IsUserAdmin.manifest -outputresource:IsUserAdmin.exe
上記手順通りにAのマニフィストファイルを作成し、 [アプリケーション名.manifest]をexeファイルと同じディレクトリに置き Bのコマンドを流したんですがエラーとなります。
mt.exeのコマンドが上手く実行できてないのかなと思うのですが、 詳しい方がおられたら教えて頂きたいと思います。
DOSでの実行結果
ディレクトリ=アプリケーション(exeファイルの場所) コマンド= "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\mt.exe" -manifest IsUserAdmin.manifest -outputresource:IsUserAdmin.exe
エラー内容: mt.exe : command line error c1010007: Unexpected/Unknown option " manifest". Use the /? option for help on usage and samples.
|
|