C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: インストーラが埋め込んだマニフェストを無効にする?


(過去ログ 25 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■11360 / inTopicNo.1)  インストーラが埋め込んだマニフェストを無効にする?
  
□投稿者/ DarkSkies (1回)-(2007/12/12(Wed) 19:11:54)

分類:[.NET 全般] 

[開発環境: VS2005@WinXP Pro / 使用言語: VB2005]

VS2005のセットアッププトジェクトで作成したインストーラについて質問させてください。


Vistaにおいて仮想化を無効にするため、下記のwebページを参考に
Windowsアプリケーションにマニフェストを埋め込むようにしました。

http://bitwiz.jp/tabid/56/EntryID/19/Default.aspx
http://blogs.msdn.com/tsmatsuz/archive/2006/11/01/windows-vista-uac.aspx

これによってVistaの仮想化の機能が意図したとおり無効になることは確認できました。


ところが、この同じアプリケーションをセットアッププロジェクトで作成した
インストーラでインストールすると、なぜか仮想化が無効になりません。

セットアッププロジェクトにミスがあって最新の実行ファイルではないファイルを
インストールしている可能性も疑いましたが、それはないようです。(Formのタイトル等
些細な変更を加えてそれがインストールしたものに反映されることによって確認)

インストールされた実行ファイルとオリジナルを比較してみると、
アセンブリバージョン、作成日、サイズなどすべての属性は一致します。

ただ、バイナリエディタを使って比較すると、何箇所か値が食い違っているようでした。


このような現象の原因はなんでしょうか?
どうしたら解決できるでしょうか。

よろしくお願いします。
引用返信 編集キー/
■11368 / inTopicNo.2)  Re[1]: インストーラが埋め込んだマニフェストを無効にする?
□投稿者/ Azulean (10回)-(2007/12/12(Wed) 22:41:13)
実行できるバイナリとインストールされるバイナリのマニフェストを比較してみてはいかがでしょうか?
リソースとして埋め込まれているのであれば、Visual Studio 2005からexeファイルを開けばリソースを見ることができるはずです。
RT_MANIFESTあたりだったと思いますが、自宅には環境がないため、確かめられません。

もしかしたら、マニフェストが埋め込まれていないという可能性も考えられますが、現状の情報では何とも判断できません。
もし、実行できるバイナリと同じフォルダに〜.exe.manifestがあれば削除してどうなるかとか見てみるのも一手かも?
(*.exe.intermediate.manifestや*.exe.embedded.manifestではありません)

あると良い情報
・作成しているバイナリは.NET Frameworkもの?ネイティブ?
・言語はC#?C++?
・マニフェストを組み込むビルドイベントに設定している文字列は?
・構成による変化はある?

引用返信 編集キー/
■11448 / inTopicNo.3)  Re[2]: インストーラが埋め込んだマニフェストを無効にする?
□投稿者/ DarkSkies (2回)-(2007/12/13(Thu) 20:11:59)
No11368 (Azulean さん) に返信

なるほど、そんな方法で埋め込みマニフェストの有無が確認できるんですね。知りませんでした。

試しに、Windows Formを一つ表示するだけのプロジェクト、及びそのセットアッププロジェクトを
新規に作成して、教えて頂いた方法でオリジナルの実行ファイルと、セットアップでインストールされた
実行ファイルに違いがでるかを確認してみました。

埋め込んだマニフェスト、および埋め込み方法は下記のwebページで紹介されているものを
そのまま使用しました。
http://blogs.msdn.com/tsmatsuz/archive/2006/11/01/windows-vista-uac.aspx

判明したことを以下に箇条書きにしてみます。

・ 上記URLで紹介されている方法で、プロジェクトの出力フォルダ(bin\Release)に作成されるバイナリには
  マニフェストが正しく埋め込まれていることが確認できる。

・ セットアップによってターゲットPCにインストールされたバイナリからは、
  やはり埋め込んだはずのマニフェストが消失している。

・ ただし、上記の現象は、セットアッププロジェクトにバイナリを「プロジェクトの出力」として
  追加した場合のみ起こる模様。「ファイル」として追加した場合には上記現象はおこらない。


しかし、この現象がバグではなく正規の仕様であるとしたら、どんな意図があるんでしょうかね。。

ちなみに使用している言語は前の投稿にも書きましたがVB2005です。
引用返信 編集キー/
■11451 / inTopicNo.4)  Re[3]: インストーラが埋め込んだマニフェストを無効にする?
□投稿者/ Azulean (11回)-(2007/12/13(Thu) 22:17:06)
同じような症状がないかぐぐってみたところ、次のような投稿を見つけました。

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2416277&SiteID=1

セットアッププロジェクトはbin/Releaseではなく、obj/Releaseを参照している?
引用返信 編集キー/
■11453 / inTopicNo.5)  Re[4]: インストーラが埋め込んだマニフェストを無効にする?
□投稿者/ DarkSkies (3回)-(2007/12/13(Thu) 23:13:28)
No11451 (Azulean さん) に返信
> 同じような症状がないかぐぐってみたところ、次のような投稿を見つけました。
>
> http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2416277&SiteID=1
>
> セットアッププロジェクトはbin/Releaseではなく、obj/Releaseを参照している?

なるほど……。
どうもリンク先のkid_kanedaさんと同じミスを犯していたようです。
ありがとうございました。

おそらくこれで解決のように思いますが、
一応明日確認してまた報告します。

「解決済み」のチェックはそのときさせてもらいます。
引用返信 編集キー/
■11483 / inTopicNo.6)  Re[4]: インストーラが埋め込んだマニフェストを無効にする?
□投稿者/ DarkSkies (4回)-(2007/12/14(Fri) 23:31:37)
やはりビンゴでした。

ビルド後の処理を、\obj\Release以下に生成されるバイナリにもマニフェストを
埋め込むように修正したところ見事解決しました。

どうもありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -