0

Installshield 2012 Pro で維持している MSI パッケージがあります。

パッケージは数年ぶりに作成されたもので、アプリケーションの新しいバージョンのインストールが開発チームによってリリースされるため、定期的なメンテナンスが必要です。この MSI は、多くのマシンで問題なく多くの場所で使用されています。

ある顧客の場所では、20 台のマシンに約 20 個のアプリケーションのコピーをインストールしました。各マシンはまったく同じように構築されています。定期的に、理由は不明ですが、そのアプリケーションに関連するレジストリ エントリが失われます。それらのすべてではなく、1 つまたは 2 つを選択します... 同じエントリが常に失われます。

これまでのところ、正確な根本原因を追跡することはできませんでしたが、サポート エンジニアの 1 人が、アプリケーションのショートカットを開いたときに MSI 修復ダイアログが表示されることに気付きました。これに続いて、レジストリ エントリが失われました。

レジストリ エントリが失われるたびに、c:\Windows\Installer ディレクトリから MSI を削除しました。この変更を行ったマシンでも、これまでのレジストリの変更は消えていません。

これにより、MSI が修復中に選択したレジストリ エントリを何らかの形で削除していると思われますが、その方法がわかりません。

  • 削除されるエントリと同じキーの下に、少なくとも 50 のレジストリ エントリがあります。(これらはインストーラーではなくアプリケーションによって作成されます)
  • MSI パッケージは、インストール中にキーをまったく挿入しません。
  • カスタムアクションはまったくありません
  • MSI 全体で 1 つのキー ファイル セットしかありません。これは、Windows\system32 にインストールされたコンポーネント用です。
  • 「宣伝」されているショートカットはありません

インストーラ ディレクトリから MSI を削除することと、それ以上 MSI が発生しないことの間には明確な関連性があるように見えますが、MSI の何が特定のレジストリ キーを消失させるのかわかりません。

これが私の MSI またはお客様のシステムにとって主観的である正確な理由を認識しているので、可能な限り一般的に質問します。

  • 上記を考慮して、WindowsがMSI修復機能を起動するのはなぜですか
  • 上記を考慮して、MSIはレジストリを変更できますか
  • この MSI の自動修復機能を無効にするために、MSI のインストール後にとにかくありますか?
  • 自動修復が行われないようにするには、MSI をどのように変更すればよいですか?

ありがとう

4

1 に答える 1

0

自動車修理が製品に関連しているかどうかを証明することから始めます。Windows インストーラーが自動修復を開始する原因となったコンポーネント ID のアプリケーション イベント ログを確認します。次に、それがインストーラーの一部である場合は、その理由を突き止めてください。

MSI がレジストリを変更する可能性は低いようです。RemoveRegistry テーブルのエントリがないとは特に言っていませんが、偶然侵入したとは考えにくいでしょう。

自動修復を無効にする悪い方法しかありません (グローバルな方法もあれば、インストーラーを登録しない方法もあります)。それらを避けてください。

まず何が悪いのかを理解してください。次に、それを修正する方法を考え出します。たとえば、ステップ 1 で、自動修復をトリガーするコンポーネントがインストールの一部であると判断した場合は、詳細な MSI ログを取得できるように、これが発生するマシンでロギング ポリシーを設定します。

于 2012-09-21T12:17:39.827 に答える