Visual Studio2010でProgram Filesに読み書きが必要がファイルを追加するには?

解決


Edotatsu  2012-01-25 15:56:35  No: 147473  IP: 192.*.*.*

VB2010でプログラムを作成しました。
Visual Studio2010インストーラーのセットアッププロジェクトに関する質問です。

アプリケーションフォルダにプライマリ出力と依存関係のあるファイルの他に作成したプログラムが動作するために必要な読み書きする必要のあるファイルを追加しています。
問題なくビルドして、****.msiとsetup.exeができてインストールもできるのですが、7とVistaでは、Program Filesのフォルダが読み取り専用になるためプログラムが動作しません。

別のプログラムでVisual Studio2005インストーラーで同じことをするとProgram Filesのフォルダは読み取り専用ですが、互換性ファイルができてそちらを読み書きするのでプログラムは正常に動作しています。

2005と2010の各プロパティを見比べても違いはないようなのです。
Visual Studio2010で、Program Filesのフォルダに読み書きが必要なファイルを追加して互換性ファイルとして利用できるようにするには、セットアッププロジェクトのどこで何を設定すればいいのかをアドバイスいただければ幸いです。

尚、2005も2010も同じパソコンで、2005は互換性ファイルがあり、2010だとありません。
よろしくお願いします。

編集 削除
YuO  2012-01-25 17:33:00  No: 147474  IP: 192.*.*.*

根本的な話になりますが,読み書きする必要があるのであれば,Usersに対して必要な権限を追加するインストーラーを作ってはどうでしょうか。
# カスタムアクションでその動作をする。

元々,%ProgamFiles%フォルダに対して,Usersは読み取り権限しか持っていません。
これは,少なくともWindows NT 4.0時代から変わっていません。
なので,当時からまともなプログラムはProgram Filesへの書き込みはしていませんでした。
まずは,「%ProgramFiles%以下にあるファイルへの書き込みが必要である」という仕様を修正すべきかと思います。

編集 削除
Edotatsu  2012-01-25 19:36:11  No: 147475  IP: 192.*.*.*

YuOさんありがとうございます。
ご指摘はもっともだと思うのですが、今回の質問は、2005で出来ていたことを事情により2010で行いたいのです。
2010で実現する方法のアドバイスを引き続きお願いします。

編集 削除
魔界の仮面弁士  2012-01-26 00:49:34  No: 147476  IP: 192.*.*.*

・AnyCPU ビルドですか? x86 ビルドですか?
・マニフェストリソース(またはmanifestファイル)の記述に
  2005版と2010版の間で差異がありませんか?
http://sakura-editor.sourceforge.net/htmlhelp/HLP000080.html

編集 削除
Edotatsu  2012-01-27 22:08:20  No: 147477  IP: 192.*.*.*

魔界の仮面弁士さん、返事が遅くなり申し訳ありませんでした。
2010の方は、AnyCPU ビルドで、2005の方はx86 ビルドです。
2010のmanifestファイルは、My Projectにありましたが、2005の方はmanifestファイルが見当たりません???

編集 削除
魔界の仮面弁士  2012-01-28 17:28:46  No: 147478  IP: 192.*.*.*

開発中の状態というよりも、作成された exe の中に manifest リソースが
埋め込まれているかどうかを確認した上で、その内容を調べてみてください。

もしも同リソースが無い場合は、exe と同じフォルダーに対して、
manifest ファイル(*.exe.manifest)として配置して、
動作の違いを確認してみてください。

それによって動作が変わるのであれば、
  ・manifest リソースの事後埋め込み(または削除)
  ・manifest リソースの編集
  ・manifest ファイルの配置
などによって、今回の問題を解決できると思います。

編集 削除
Edotatsu  2012-01-31 18:42:56  No: 147479  IP: 192.*.*.*

魔界の仮面弁士さん、回答ありがとうございます。
教えていただいたmanifestの件を調べて見ます。

私の方の状況で少し時間がかかりそうなので、ひとまず解決とさせていただきます。
ありがとうございました。
大変助かりました。

編集 削除