私の製品の以前のインストールは、展開プロジェクト (vdproj) として Visual Studio 2008 で行われました。ユーザーには、ユーザーごと (私だけ) またはマシンごと (全員) にインストールするオプションがありました。WiX で新規インストールを行っています。マシンごとに製品をインストールした場合、新規インストールによって以前のバージョンがアンインストールされます。ただし、%ProgramFiles% でユーザーごとに製品をインストールした場合、新しいインストールでは以前のものがアンインストールされず、同じフォルダーに 2 つのインストールが混乱してしまいます。
この状況でインストールを検出して停止したい。自動アンインストールはなく、検出して停止するだけです。ソリューションは、あるユーザーが以前にユーザーごとのインストールを行い、別のユーザーがマシンごとに新しいインストールを行っている場合に対処する必要があります。DirectorySearch
要素を使用できると思いFileSearch
ましたが、UI でターゲット フォルダーが決定される前に実行されます。
WiX コードが含まれている場合は、小さな例を提供してください。そこから学びます。
編集: AppSearch 機能DirectorySearch
とを使用してプロパティを追加し、要素FileSearch
で条件をチェックするとCondition
、インストールの起動時に条件がチェックされます。これは私が望むものではありません。ユーザーはターゲット フォルダーを変更する可能性があるため、ターゲット フォルダーを変更できなくなった後、いくつかのステップでターゲット フォルダー内のファイルの存在を確認する必要があります。
私の素朴さで、前の段落で述べたプロパティの値をカスタムアクションで読み取ろうとしましSetProperty
たが、それも機能しません。値は読み取れますが、セットアップ開始時に決定された値です。
適切な解決策には、おそらく別の質問に対する回答が含まれているはずです。WiXトリックコミュニティwikiで与えられたヒントに従って、私は現在JScriptをいじっています。Rob Mensching のブログ投稿で言及されているように、ウイルス対策の介入を避けるために、おそらく .dll にします。