2017-02-02 28 views
0

初めてInstallShield MSIインストーラのマイナーアップグレード(これは正しい用語だと思います)で問題が発生しています。以前に何度も行ったことと同じように、「製品バージョン」を「2.0.12」から「2.0.13」に設定し、コンポーネントファイル/アセンブリバージョンを「2016.12.19.1415」から「2017.1」に更新しました.30.1037 "。ただし、アップグレードを実行すると、コンポーネントは2016バージョンから2017バージョンにアップグレードされません。私はMSIログから得としてInstallShield MSIのアップグレードでファイルが更新されない

以下

成分に関する限り多くの情報がある:

MSI(S)(4C:10)[16:848:01:32]:コンポーネント:EAS.Common.SignalR .Client.dll;インストール済み:ローカル。リクエスト:Null。処置:Null

編集:以前のバージョンのインストーラに戻って更新を追加しました。アップグレードが正しく機能するようになりました。だから私はそれが私が追加した新しいコンポーネントと関係があると思う。

答えて

2

ほとんどの人は、より効率的ではないメジャーアップグレードでも、よりシンプルで柔軟性に優れています。マイナーアップグレードでは、コンポーネントのルールと厳格な制限を厳密に理解する必要があります。これには、セットアップ開発者に何を求めているのか、開発チームによる規律が必要です。

マイナーアップグレードを実行する場合は、MSIENFORCEUPGRADECOMPONENTRULES propertyを使用してコンプライアンスを完全にテストしてください。これは、動作しているように見えるが、期待どおりに終了しないようなインストールではなく、バグを見つけるのに役立ちます。

+0

問題は、以前のインストールで存在していたコンポーネントを削除したことでした。コンポーネントに「1 = 0」という条件を設定し、それを「DONOTDELETE_ {name}」という名前に変更しました。 –

+0

コンポーネントの名前を変更する場合は注意が必要です。 MSIはプライマリキーの変更が本当に好きではありません。 MSI < 4.5. For > = 4.5を使用している場合は、MSIUNINSTALLSUPERSEDEDCOMPONENTSで読み上げると、Transitive Componentビットを使用して「パンクチャリング」コンポーネントを読むことをお勧めします。 http://stackoverflow.com/questions/23102970/remove-file-during-minor-upgrade –

+0

コンポーネントやその他の主キーの名前変更に関する警告:https://blogs.msdn.microsoft.com/windows_installer_team/2007/03/07 /任意ラベル - プライマリキーとして使用 - バージョン間で変更する必要はありません/ –

関連する問題