板をお借りして質問させていただきます。
VisualStudio2005 / VB.NET で Windows アプリのインストーラを作成しているのですが、
下記のような現象が発生し困っています。
①インストーラ (msi) を作成し、アプリをインストールします。このとき、
インストール先のディレクトリに aaa.exe と bbb.ini がインストールされます。
デスクトップ上に aaa.exe へのショートカットが作成されます。
②bbb.ini を手動で削除します。
③デスクトップ上にある aaa.exe へのショートカットを実行する。
④インストーラが起動し、自動的に bbb.ini が再度インストールされた後、アプリケーションが起動する。
この時、インストーラが見つからない場合、インストーラの場所を指定するダイアログが開く。
といった現象です。
③のところでショートカットではなく、インストール先のディレクトリにある aaa.exe を直接起動すると、
④のような現象は発生しません。
いろいろネット上で検索して
http://dobon.net/vb/dotnet/deployment/disableadvtshortcuts.html
等を参考にして、
msiexec /i (MSIファイル名) DISABLEADVTSHORTCUTS=1
等試したのですが、現象は同じでした。
この現象を回避する方法をご存知の方がおられましたら、ご教授いただけないでしょうか?
よろしくお願い致します。
インストーラに bbb.ini を含めなければ良いのではないですか?
削除しても大丈夫な作りになっているのなら、インストール時からある必要はないのでは?
シャノンさん、お返事ありがとうございます。
説明不足で申し訳ありません。
仕様で、aaa.exe は常に起動時に bbb.ini を読込むようになっており
bbb.ini は必須ファイルとなっています。
ユーザが手動で bbb.ini 等誤って削除した場合に
aaa.exe 起動時にメッセージを表示して
ユーザに通知するという仕様になっているのですが
テスト中に上記現象が発覚しました。
どうやら現象としては
bbb.ini でなくても、たとえば readme.txt とかでも
インストーラがインストールしたファイルであれば
削除すると自動修復インストールをしようとする模様です。
インストール先が C:\Program Files 等であれば、一般のユーザには手出しできないように権限が設定されていますので、消される心配はありません。
ユーザが常に Administrator 権限でログインしてるようだと消されちゃいますけど、それは運用がおかしいんであって、プログラム側で気を使うことではありません。
加えて、bbb.ini が消される心配をするんであれば、aaa.exe が消される可能性も同じようにあるわけですが、その場合はどう対処するんでしょうか?
また、bbb.ini がもし消された場合、ユーザーにメッセージを表示するとありますが、どういうメッセージを出して、ユーザーにどう対処させるつもりなのでしょうか?
シャノンさん、お返事ありがとうございます。
仕様・運用上のご指摘に関してはごもっともかと思います。
回避方法が見つからない場合、ご指摘の通りプログラムの責任範囲外ということで
仕様的な交渉をすることになるかと思いますが、
現時点では上記のインストーラの現象を回避する方法があればと策を模索している段階です。
まぁ、無茶な要求というのはよくあることです。
心中お察しします。
msiに詳しい人が集まっているメーリングリストをご紹介します。
こちらで相談した方が早いかもしれません。
http://www.freeml.com/msi
シャノンさん、お返事ありがとうございます。
メーリングリスト情報ありがとうございました。
参考にさせて頂きます。
インストーラを1から作るのは今回が初めてなのですが、今回の作業を機にいろいろ勉強してみようかと思っています。
解決策が見つかれば、こちらの掲示板でもご報告したいと思います。
頑張ってください。
申し訳ありませんが、俺はこれ以上は力になれそうにありません。
ツイート | ![]() |