2016-08-20 10 views
0

カスタムWIXブートストラップインストーラがあります。ブートストラップバンドルチェーン3つの個別のアプリケーションmsi。ブートストラップのカスタムUIでは、インストールするアプリケーションを選択することができ、カスタムブートストラップの選択に基づいてmsiをインストールします。msiのそれ以降のバージョンを使用してアプリケーションをアンインストール

ここでシナリオを検討してください。 アプリケーション、A1バージョン1.0.0.50がシステムにインストールされているとします。ブートストラップバージョンも1.0.0.50であると仮定してください。

いくつかのアップデートがある次のバージョンのブートストラップインストーラを想定します。そのバージョンは1.0.0.51と仮定します。 これを使用して、2番目のアプリケーション、たとえばA2をインストールします。 また、A1をアンインストールします。現在、この最新のインストーラを使用して、A1から1.0.0.51へのアップグレードをサポートしています。

しかし、私は最新のブートストラップバージョンを使用してA1をアンインストールする可能性をチェックしたいと思います。どのように実装するのですか? エンドユーザはプロジェクト要件に従って、任意のバージョンのブートストラップを使用してA1をアンインストールできる必要があります。

私はレジストリに各msiのUninstallstringを格納しています。たとえば、MsiExec.exe/X {90140000-0011-0000-0000-0000000FF1CE}のようにアンインストール値を実行すると、 msiアンインストールで実行される処理は正確に行われますか?それは、レジストリエントリエントリの削除、インストールされたファイルの削除などを処理しますか?

答えて

0

これについてレジストリには行ってはいけません。 MSIデータベースには、あなたの要件(https://msdn.microsoft.com/en-us/library/windows/desktop/aa372379(v=vs.85).aspx)を満たすためのアップグレードテーブルがあります。インストールされたMSIのアップグレードコードを含むエントリを追加し、VersionMin & VersionMaxでバージョン境界を指定し、必要に応じて属性769などを設定し、新しいパブリックプロパティを作成してSecureCustomPropertiesに追加します。 最後に、インストール中にWindowsロギングを有効にし、問題が発生した場合は、findrelatedproductsやremoveexistingproductsなどの標準的な動作のログを確認します。

+0

ありがとうございます。あなたは例を挙げて詳細を教えてください.E.Gは、属性を設定し、カットムプロパティを保護することについてよく分かりませんでした。私のMSIで – user3663551

+0

現在のバージョンアップテーブル次のとおりです。<アップグレードID = '$(var.ProductUpgradeCode)'> <のUpgradeVersion最小= '1.0.0.0' 最大= '99 .0.0.0' プロパティ= 'PREVIOUSVERSIONSINSTALLED' IncludeMinimum = 'はい' IncludeMaximum = 'NO' OnlyDetect = 'NO' /> – user3663551

+0

これは正しいですか?ありませんかより高いバージョンへのアップグレードは正常に動作しています。 アップグレード中に古いバージョンがアンインストールされ、新しいバージョンがインストールされます。 アップグレードの代わりにアンインストールしたいのであればそれはしていません – user3663551

関連する問題