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 をどのように変更すればよいですか?
ありがとう