0

解決策がいくつかのステップの組み合わせであると思われる Wix の状況があります。ステップが何であるか、またはそれらを構築する方法がわかりません。

私のインストールは、インストールされる別のプログラムの特定のバージョンに依存しています (例: OtherApp v2.1.6)。それを Launch 条件として指定する必要があります。

注意が必要なのは、OtherApp インストールでそのバージョンが指定されている唯一の場所が、テキスト ファイル (version.dat) 内にあることです。そのため、条件を起動する前に、dat ファイルからそのバージョン文字列を読み取り、それをプロパティまたは条件に割り当てるカスタム アクションを作成する必要があります。

バッチ ファイルでそのテキスト ファイルを開き、見つかったバージョンと引数としてバッチ ファイルに渡されたバージョンを比較しようとしました。バッチ ファイルは、バージョンが同じかそれ以上の場合 (下位互換性を前提として) 0 を返し、バージョンが古い場合は 1 を返します。しかし、バッチ ファイルを正しく実行するためのカスタム アクションを取得できませんでした。

また、VBScript を使用するさまざまな方法を試しましたが、成功しませんでした。

このシナリオをどのように設定する必要があるかについて、誰かが洞察を与えることができますか? 知っていると思っていたのに、手がかりがないことに気づきました。

助けてくれてありがとう!

4

1 に答える 1

1

あなたは正しい道を進んでいます。TXT ファイルを読み取るカスタム アクションは、LaunchCondition 標準アクションの前に即時実行する必要があります。このカスタム アクションは、InstallUISequenceInstallExecuteSequenceの両方のシーケンスでスケジュールする必要があります。インストールをサイレント モードまたは基本 UI モードで実行する場合は、InstallExecuteSequence のみが考慮されます。それ以外の場合は、両方のシーケンスが実行されます。そのカスタム アクションは、ファイルからバージョンを読み取り、MSI プロパティを設定する必要があります。このプロパティは、後で起動条件で使用する必要があります。

カスタム アクションを作成する言語は重要ではありません。そのため、ご都合のよいテクノロジーを自由に選択してください。ただし、 VBScript のカスタム アクションは最悪だということを覚えておいてください。:-)

アプリケーションが .NET アプリケーションの場合、これは .NET がインストールの前提条件であるため、C# でカスタム アクションを作成するオプションを利用できることを意味します。DTF (WiX に同梱されている MSI データベースと通信するための API) は非常に便利です。たとえば、プロパティを設定するには、次の構文を使用できます。

session["OTHER_APP_IS_INSTALLED"] = 1;
于 2011-10-04T05:45:56.493 に答える