WiX を使用して、ソフトウェアをアンインストールすることだけを目的とした MSI を作成できますか?

StackOverflow https://stackoverflow.com/questions/4379544

質問

WiX で生成されたインストーラーを使用してソフトウェアのバージョン 1.0 を配布しましたが、今度はバージョン 1.1 を配布/配布したいと考えています。可能であれば、1.1 をインストールする前にまず 1.0 を手動で削除するように人々に指示する状況は避けたいと考えています。

ただし、変更する必要がありました InstallScope, から変更します perUserperMachine さまざまな技術的な理由から。アップグレードが面倒になることを除けば、大したことはありません。

私が見ているのはそれと同じことです この郵便受け すべての操作を行ったにもかかわらず、 適切な仕事 アップグレードを実装するには、完了すると、インストールされているプログラムのリストに 2 つの異なるエントリが表示されます。1 つは 1.0、もう 1 つは 1.1 です。そしてこれがソフトウェアに問題を引き起こしています。

したがって、ここでは基本的な「以前のバージョンを削除する」ロジックが機能しないように見えるため、以前のバージョンをアンインストールするには他の方法が必要です。正しい射撃の道を歩もうとした msiexec /x コマンドで以前のバージョンを削除します ShellExecute CustomAction, しかし、何かが欠けていない限り、これが機能する場所はシーケンス内にありません。 msiexec 別の実行中のコマンド。

それから私は偶然見つけました このページ これは、MSI を「チェーン」する方法について詳しく説明されています。

setupbld.exe -out $(TargetDir)setup.exe -msu FirstInstaller.msi -msu SecondInstaller.msi -setup $(ProjectDir)setup.exe

素晴らしいですね。今必要なのは、バージョン 1.0 を削除することを唯一の機能とする MSI だけで、それを古いバージョンと連鎖させることができます。

ただし、それを行う方法についてのドキュメントはあまり見つかりません。実際、これは理論上、最初にインストールしなかったソフトウェアを削除するために使用される可能性があるため、セキュリティ上の理由からこれが技術的に可能であるかどうかはわかりません。

ソフトウェアをアンインストールすることを唯一の目的とする WiX を使用して MSI を作成する方法を知っている人はいますか?それとも、私がこの問題に取り組むのは完全に間違っているのでしょうか?

役に立ちましたか?

解決

この Wix を使用して、1.1 バージョンの一部として以前のバージョンをアンインストールします。なぜ MSI を連結する必要があるのか​​わかりません。

WiX インストーラーのアップグレードを実装するにはどうすればよいですか?

編集:InstallScope 要件の変更を見逃していました。したがって、本当に必要なのはブートストラップです。

BootStrapper の作成方法をここに投稿しました。 私のソフトウェアと前提条件をインストールする WIX Bootstrapper プロジェクトが必要です

他のヒント

解決策は、「msiexec.exe /x」コマンドを実行するカスタムアクションを使用することです。後にスケジュールされていることを確認してください installfinalize InstallexecuteSequenceで。また、そうです 戻る あるべきです asyncnowait (非同期実行、返品を待たないでください)。

これらの設定を使用すると、アンインストールは異なる非同期プロセスを使用して、競合を回避します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top