質問

私は、ソフトウェアマネージャのマージモジュールなしで flexnet connect を含む InstallShield InstallScript MSI プロジェクトを持っています。この製品のバージョンは6.0.32です。私はソフトウェアマネージャのマージモジュールなしで flexnet connect も含まれているバージョン6.1用の2番目のインストーラを作成しました。 6.0.32バージョンを含むシステムでメジャーアップグレードを実行すると、MSIログのメッセージが表示されます。

Disallowing installation of component: {FF970098-B748-427B-B946-AA8E1A1F82AD} since the same component with higher versioned keyfile exists
.

コンポーネントは、 FlexNet Connectフォルダにあるisusweb.dllファイルを参照しています。

6.0.32製品が削除される前にこのチェックが行われるようです。インストールは6.0.32製品を削除するために進みます。これにより、isusweb.dllが削除されます。 6.1のインストール中に、Component Version Checkのためにisusweb.dllが戻されません。

アップグレードは成功します。アプリケーションをショートカットから実行しようとすると、コンポーネントを検証します。 isusweb.dllがMSIが見つからないため、修復を試みるので、MSIが見つからず、アプリケーションが開くことはできません。

常に上書きするためにマージモジュールを取得する方法はありますか?

他のヒント

マージモジュールはインストールされない、それらはマージされます。製品MSIがインストールされています。サードパーティのマージモジュールを使用するという問題の1つは、バグがある場合は、それについてできません。

このMSMをカプセル化する目的でのみMSIを作成することを検討します。その後、このMSIを製品MSIから取り付けるためのセットアップPREREQまたはスイートインストーラを作成します。

あなたはすでに2つの本当に良い答えを持っていますが、試して合成するために:

それは本当にバグのマージモジュールのように聞こえます。 Phil は、バグを回避するためにInstalleXecutesequenceでのあなたの担当者の配置を修正することを示唆しています。 Chris 故障したマージモジュールを独自のセットアップにすることをお勧めします。私は両方に同意し、両方の提案に従うべきだと思います:

  • メインセットアップからマージモジュールを取り外します。
  • 新しいセットアップを作成し、障害のあるマージモジュールを追加し、正しいREPシーケンスを確保します。

REPの修正は、コンポーネントの参照を処理するための修正が100%正しいです。これを問題として除去するには、個別のセットアップを作成すると、それ自身のMSI内のバグモジュールを含めることができます。これは、誤ってバグを再起動するのに役立ちます。将来的にはデザインが変更されたことを避けるのに役立ちます - そして後者はありそうもない。

クリスは言うように:マージモジュールは配信されず、マージされます。更新されたマージモジュールは私が知っているすべてのために利用可能かもしれませんが、それでもそれを含めることは賢明です。特にGAC(グローバルアセンブリキャッシュ)を扱っている場合は

私が遭遇したときに適用された別の解決策は、ORCAを使用して、mergeモジュール内のファイルテーブルから「バージョン」列を更新するように設定することでした。それを最大65535.65535.65535.65535に設定すると、これによりアップグレードが常にMERGEモジュールからDLLをインストールするように強制されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top