私が見つけたコードに基づいてインストーラを作成しましたhere。以前のバージョンのアプリケーションが存在する場合は、新しいバージョンをインストールする前にインストーラで削除する必要があります。WiXのメジャーアップグレードでは、起動するまでインストールが完了しません
クリーンインストールの場合は、すべてうまくいきます。
アップグレードの場合、奇妙なことが起こります。予想どおり、古いバージョンは削除され、レジストリは変更され、ショートカットがデスクトップに配置されます。奇妙なことに、インストーラの完了時に、アプリケーションフォルダにプライマリファイルが存在しません。
アップグレード後に起動すると、小さなインストーラのメッセージボックスがポップアップし、「Windowsが設定中にお待ちください」というメッセージが表示されます。このクイックメッセージの後、ファイルはアプリフォルダ内にあるはずであり、アプリが起動します。
ただし、起動する前に、それはありません。私はアプリを起動する前にリブートを試みて、それが何らかの種類のキャッシュに詰まっているとファイルを配置するかどうかを確認していました。
誰でもこの現象が見られますか? this questiomのようなビットですが、すべてのアップグレードで発生します。
可能な説明のうち、最初のシナリオは私のシナリオに合っています。元のアプリのコンポーネントGUIDが見つかるかどうかを確認します。私ができない場合、インストール時にファイルを強制的に削除する方法はありますか? – Tony
@トニー:それはわかりません。この問題は、ファイルがインストールされていないだけでなく、インストールプロセスの最後に古いバージョンの製品が削除されたときに*アンインストールされます。 GUIDを変更すると、コンポーネント参照カウントメカニズムが壊れます。 –
私は、古いコンポーネントのGUIDをプライマリファイルに再利用しようとしましたが、問題はまだ存在します。今回は、インストーラも再起動を強制しました。私は古いインストーラがその1つのコンポーネントエントリの下にすべてのファイルを持っていたことに気づいた。 – Tony