2016-08-24 9 views
3

私が扱っているアプリは主にVB6で書かれています。自己修復型MSIの診断

私のアプリを起動すると、別のMSIインストーラが自動的に実行され、自分のインストールを修復しようとしているという報告があります。多くの場合、AutoCAD用ですが、他のプログラムもあります。

通常、これはアプリを起動するたびに発生します。

これがなぜ発生するのかを診断するために使用できる手順は何ですか?実行中のサードパーティのインストーラなので、何をしているのかはわかりません。

が、これらは直接十分な情報を提供していません。

オートデスクは、この上で公開いくつかの情報を持っています。 理想的には、エンドユーザを回避する方法やクリーンアップする方法を伝えるのではなく、これを完全に防ぐことができるようにしたいと考えています。

+1

最初のリンクは、検索する必要のあるイベントログエントリの種類を示しています。 Windowsインストーラが修復が必要と検出したコンポーネントが表示されます。そのコンポーネントがなぜ修復する必要があるのか​​、それをよりよく記述するために私たちが手助けをするのはあなた次第です。 http://stackoverflow.com/questions/5501028/how-can-i-determine-what-c​​auses-repeated-windows-installer-self-repair –

+0

表示されるインストーラは、アプリまたはAutodeskのものです/ AutoCAD? –

+0

私たち自身ではなく、実行するAutoCADインストーラです。質問が明確になった - ありがとう。 – DaveInCaz

答えて

1

についてピーター・クーパー・ジュニアのVB6についてのコメントは自己修復の原因となります。 Wixのheat.exeのドキュメントをご覧ください。このツールは、VB6のランタイム自体によって所有されている(それゆえにめちゃくちゃや他のMSIによって更新されてはならない)特定のレジストリ値を抽出抑制するためにサポートし、特別なスイッチがあることが表示されます。http://wixtoolset.org/documentation/manual/v3/overview/heat.html

スイッチ-svb6にリストを移動し、右側の説明を読んでください。

  • CLSID {D5DE8D20-5BB8-11D1-A1E3-00A0C90F2731:(ここでは再現:)

    をVB6で作成したCOMコンポーネントを登録するときには、VB6のランタイムコンポーネントの一部であるレジストリ エントリを追加します}

  • タイプライブラリ{EA544A21-C82D-11D1-A3E4-00A0C90AEA82}
  • タイプライブラリ{000204EF-0000-0000-C000-000000000046}

[と同様]これらの2つのタイプライブラリを参照する任意のインタフェース

インストーラはこれらのキーに書き込みますか?それを除外しようとするならば、たとえそれがこの特定の事件の原因ではないとしても、これは良いことです。

以外に、Windowsインストーラの自己修復を引き起こす可能性のあるものについて長い説明があります。How can I determine what causes repeated Windows Installer self-repair?です。自己修復が非常に多くの異なる方法で起こるため、長い記事です。共通の特徴は、システム上のさまざまなインストーラーが共有設定で競合し、エンドレスループで各アプリケーションの起動時に独自の値で更新し続けるということです。

+0

インストーラがそれらのキーを書かないようです。それは知っていると信じられないほど有用なことです。私はあなたが将来消えた場合に備えて、参照したリンクからキービットを追加しました。 – DaveInCaz

+0

私は編集を承認しました。よかった、ありがとう。 –

2

インストーラは、WindowsインストーラがAutoCadインストールの一部であると知っているディレクトリ、ファイル、またはレジストリキーに対して動作しています。

最初に、グローバルWindowsインストーラーのログを有効にします。これは、AutoCadのインストーラーを含むすべてのWindowsインストーラアクティビティが外部ログファイル(%temp%)に書き込まれることを意味します。

次に、あなたのインストーラを実行し、AutoCadのインストーラの実行をしてみましょう。

%temp%に移動し、MSIXXXX.LOGファイルを見つけます。インストーラ用、AutoCad用です。これらを開くと、AutoCAD MSIが見つけたファイルやレジストリキーが見つからないか、変更されたかどうかを確認することができます。

あなたはこのためWiLogUtl.exeが参考に見つけること:

あなたがautorepairをトリガーディレクトリ、ファイルまたはレジストリキーがインストーラでもあることを識別します運が良ければ。もしあなたが本当に運が良ければ、それはあなたがとにかくインストールすべきではないアイテムであると特定することができます - とにかく、Windowsファイル保護によって保護されているシステムコンポーネントを参照しています。

もしそうでなければ、RegFree COMのようなものを見て共有ディレクトリからファイルをプライベートディレクトリに移動し、レジストリの競合を減らす必要があります。また、Visual C++ランタイムMSMを使用してMSIを作成する場合は、代わりにMS EXEインストーラを使用するか、プログラムフォルダに直接DLLを配置することを検討してください。この種の問題を引き起こします。

関連する問題