2016-05-02 10 views
1

既にインストールされているアプリケーションのバックアップを作成するためのvbscriptがあります。 私はそれをカスタムアクションで追加しました。私は以前に1をインストールする1つの以上のバックアップフォルダを持つことになりますtwice..soWixインストールされていない、アンインストールされ、アップグレードされていないためのカスタム条件

が実行されているインストールされていないOR UPGRADINGPRODUCTCODE

問題は、アップグレードカスタムアクションの間にあります。

+0

あなたはすでに何を試しましたか? –

+0

<インストールアクション> = "InstallFiles">インストールされていないか、またはREMOVE〜= "ALL")またはUPGRADINGPRODUCTCODE –

+0

"インストールされていない、アンインストールしてアップグレードしていません"という条件をすべてtrueにします。 –

答えて

1

UPGRADINGPRODUCTCODEはあなたが使いたいものではありません。 NOT UPGRADINGPRODUCTCODEを使用してください。

このプロパティは、インストールされているMSIのサーバーコンテキスト内に現在インストールされているバージョンのmsiを実行しているときに、インストーラによって設定されます。これは、アップグレード中に "RemoveExistingProducts"を実行するときに実行されるものです。今インストールしているインストールでは、 "NOT Installed" = trueと "UPGRADINGPRODUCTCODE" = falseという問題があります。インストーラが以前のインストールを実行して削除すると、このインストールには "NOT Installed" = falseがありますが、 "UPGRADINGPRODUCTCODE" = trueになるため、カスタムアクションが実行されます。

私は何に条件を設定することを検討してしまうと、インストールは、以前のバージョンを検出して、私たちはアップグレードするときに、この条件だけ実行されます

WIX_UPGRADE_DETECTED AND NOT UPGRADINGPRODUCTCODE AND NOT REMOVE~="ALL" 

Here's WIX_UPGRADE_DETECTEDプロパティ

上のいくつかの情報になりますが、古いバージョンを削除しているときには実行されず、アンインストール時には実行されません。また、RemoveExistingProducts afterInstallInitializeをスケジューリングして、ファイルが削除または更新される前にMSIインストールのサーバーコンテキストの最早にバックアップが作成されるようにします。

+0

また、MSIが失敗したり、最後にロールバックされたりするようなWixカスタムアクションが必要です。

+0

Execute = "rollback"を作成し、正しい場所にスケジュールするだけで済みます。 IISを停止するアクションがある場合は、このロールバックアクションを停止するアクションの前にshceduleする必要があります。 –

関連する問題