- PR -

上書きインストーラでインストールすると

1
投稿者投稿内容
yu
会議室デビュー日: 2006/08/03
投稿数: 8
投稿日時: 2006-08-03 14:43
VB.NETのセットアッププロジェクトを使ってmsiを作成しました。
RemovePreviousVersions = True、Versionもアップして、
上書きインストールができるようにしました。

そのmsiを使ってインストールすることはできたのですが、アプリケーションを実行しようとすると、起動する前に、インストーラのような画面が勝手に立ち上がってしまいます(そのままほっておくと勝手に消え、アプリケーションが起動します)。
アプリケーションを実行しようとするたびにその画面が出てきて、とてもうっとおしいです。

この、アプリケーションが起動する前に勝手に立ち上がる画面を出ないようにしたいのですが、どなたかご存知であればおしえてください。
よろしくお願いします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-08-03 15:00
私も昔同じような現象に遭遇したことがあります。
アプリケーションの起動はショートカットから行っていますか?
本体のexeを直で起動した時も同様の現象が発生しますか?

私の場合は、ショートカットから起動したときのみ同様の現象が発生していました。
結局、原因はわからず、インストーラーを作り直したら直りました。
おそらくアドバタイズショートカットがおかしくなったのかと推測していますが。。。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2006-08-03 15:24
とっちゃんです。

この現象は、「自動修復が実行されているから」です。

なんで、修復されてしまうかは、個々のインストーラの問題なのでわかりません(理由が多すぎる)。

msi で作成されたショートカットは通常の形式であっても、アドバタイズ形式であっても
どちらも自動修復のトリガーが含まれていますので、ショートカットの種類は関係ありません。

ただし、エクスプローラなどでEXEを直接実行した場合は自動修復は入りません。
トリガーがないからということなんですがね(^^;

自動修復されてしまう一番よくある理由は、インストールしたファイルを削除した場合です。
インストーラは自分がインストールしたかより新しいファイルとみなせるものか
がない限り必ず修復しようとします(これが自動修復の基本的な仕組み)。

これも概要レベルですが、アプリケーションの復元: Windows インストーラの隠れた機能を明らかにする
一通りの解説が載ってます(一年ちょっと前の情報ですけど、Vistaも含め基本的には変わりありません)。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
yu
会議室デビュー日: 2006/08/03
投稿数: 8
投稿日時: 2006-08-03 16:57
早々のアドバイスどうもありがとうございます。
ご指摘どおり、ショートカットから起動する場合にのみ現象がおきていました。ショートカットが原因とはまったく思いつかなかったので、見当違いの調査ばかりしていました。

・・・がしかし、インストーラを作り直したりしているのですが、どうしてもこの画面がでてしまいます。
とっちゃんさんのおっしゃるとおり、msiでショートカットを作成する限り、この現象を避けることはできないのでしょうか。
burton999さんの「インストーラを作り直したら直った」という言葉に希望をもって、もう少しいろいろ試してみます。

なにはともあれ、原因が分かってとても助かりました。
どうもありがとうございました。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2006-08-03 18:09
引用:

yuさんの書き込み (2006-08-03 16:57) より:
・・・がしかし、インストーラを作り直したりしているのですが、どうしてもこの画面がでてしまいます。
とっちゃんさんのおっしゃるとおり、msiでショートカットを作成する限り、この現象を避けることはできないのでしょうか。


ないわけではありませんが(システムレベルでなら自動修復機能を停止させることが可能)、これは絶対に使ってはいけない最後のスイッチです。

一応、自動修復が入りやすいポイントとしては(いずれもインストーラではなくアプリ側の問題)


  • アプリケーションがインストールしたファイルを削除してしまう(ユーザーオペレーションを含む)
  • アプリケーションがインストールしたレジストリを削除してしまう(ユーザーオペレーションを含む)

というのが一番良くある、原因だと思います。
VSセットアップでは、個々のファイル、個々のレジストリエントリごとにコンポーネントが構築されるため
このような現象がよく見受けられます。

運用上回避できない場合は、インストーラで設定するのではなく、アプリケーションの初回起動時に設定するなどで回避することが出来ます。

WindowsInstaller についての詳細なご質問があるのなら、WindowsInstaller/WiX/InstallShield メーリングリスト にお越しください。
VSセットアップも含め、msi として出来上がる全てのインストーラを対象に、どんな内容でも扱ってますw

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
yu
会議室デビュー日: 2006/08/03
投稿数: 8
投稿日時: 2006-08-03 18:34
ご丁寧に説明していただいてありがとうございます。

一応、回避策として、orcaでDISABLEADVTSHORTCUTSプロパティを1に設定することにより、アドバタイズショートカットではなく普通のショートカットを作成するようにしました。
これで、アプリケーション起動時にインストーラは立ち上がらなくなったので良し、と思ったのですが、とっちゃんさんのおっしゃる「絶対に使ってはいけない最後のスイッチです」に当てはまっていないことを祈ります・・・。

あと、MLの紹介もありがとうございました。行き詰ったときに参考にさせていただきます。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2006-08-03 19:33
引用:

yuさんの書き込み (2006-08-03 18:34) より:
ご丁寧に説明していただいてありがとうございます。

一応、回避策として、orcaでDISABLEADVTSHORTCUTSプロパティを1に設定することにより、アドバタイズショートカットではなく普通のショートカットを作成するようにしました。
これで、アプリケーション起動時にインストーラは立ち上がらなくなったので良し、と思ったのですが、とっちゃんさんのおっしゃる「絶対に使ってはいけない最後のスイッチです」に当てはまっていないことを祈ります・・・。


大丈夫です。最後のスイッチではありませんw

VSセットアップではサポートしていませんが、他のインストーラ作成ツール(InstallShieldや、WiXなどなど)では、通常形式のショートカット作成もサポートしていますので、これ自身は一般的な手段の一つです。

件のプロパティはどちらかというと、環境依存的に強制させたいという場合に使うものですしね。

ただし、通常形式にしたからといって自動修復が行なわれなくなるわけではありません。
ショートカットの種類にかかわりなく、WindowsInstaller で設定されたショートカットファイルには
自動修復の情報が埋め込まれています(実際は、ショートカット以外にも、関連付けや、COMの登録情報にも埋め込まれます)。

なので、インストーラを作り直した際に問題となる部分が改善されたのではないかと思いますよ。

以前、GDNJ でもこのネタがあがっいたんですが、そのときもプログラム的には問題は無い(はずな)のに
なぜか自動修復されてしまうという状況でしたから。

私は経験がない(作ったものも、使ってるものも含め)ので、実際のところ本当に
プログラムや創ったインストーラの情報に問題がないのかはわかっていませんけどね。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
1

スキルアップ/キャリアアップ(JOB@IT)