コマンドラインを使用して、次のような「msi」ファイルを実行できます。
myProgramm.msi myProperty="abc"
私のwxsファイルでは、myPropertyが定義されていない場合にのみmyProperty(たとえば、'xyz')を設定したいと思います。
コマンドラインを使用して、次のような「msi」ファイルを実行できます。
myProgramm.msi myProperty="abc"
私のwxsファイルでは、myPropertyが定義されていない場合にのみmyProperty(たとえば、'xyz')を設定したいと思います。
SetProperty要素を見てください。要素の内部テキストは、SetProperty が発生するために true と評価される必要がある条件です。
セキュア カスタム パブリック プロパティを適切に使用していると仮定すると、コードは次のようになります。
<SetProperty Id="MYPROPERTY" After="AppSearch" Sequence="both" Value="SomeValue">Not MYPROPERTY</SetProperty>
いいえ、これを使用する必要があります:
<SetProperty Id="P.IP"
After="AppSearch"
Sequence="first"
Value="SomeValue">NOT P.IP</SetProperty>
Sequence を 'First' に変更しました - InstallUISEquence (実行する場合) または InstallExecuteSequence (それ以外の場合 - サイレント モード) の間のいずれかで、一度だけ実行されます。しかし、両方のシーケンスでプロパティを設定する必要があるかもしれません-決定する必要があります。コマンド ラインからプロパティを指定する場合は、サイレント モードで実行することを検討できます。
msiexec /i setup.msi /qn /lv*x install.log P.PASSWORD="xxx" P.IP="192.168.1.1"
または基本的な UI モード:
msiexec /i setup.msi /qb /lv*x install.log P.PASSWORD="xxx" P.IP="192.168.1.1"
また、Remember property pattern に関する Rob Menching の記事を読むことをお勧めします。これは、コマンドラインから渡されたときのプロパティのレジストリ検索設定に関連しています。 -WiX-toolsets-Remember-Property-pattern .
カスタム アクションを使用する必要はないと思います。値を指定して PUBLIC プロパティを作成し、それを SecureCustomProperties リストに追加すると、コマンド ラインでオーバーライドしない限り、値が提供されます。あれは:
<Property Id='P.IP' Value="Localhost" Secure='yes'>
次に、単にインストーラーを実行すると、P.IP=Localhost で終了し、値を指定して msi を起動すると、パッケージをアンインストールするまでその値が保存されます。つまり、次のようになります。
msiexec /i <YouPackage.Msi> P.IP=192.168.1.1
msiexec /i setup.msi /lv*x install.log P.PASSWORD="xxx" P.IP="192.168.1.1"
したがって、ユーザーがコマンドラインで設定していない場合にのみP.IPを設定したい場合は、これを使用できますか?:
<SetProperty Id="P.IP"
After="AppSearch"
Sequence="both"
Value="SomeValue">localhost</SetProperty>