2

Burn を使用して前提条件をインストールしています。前提条件の1つとして、現在のOSがWindows 7のHome Basicエディションであるかどうかを確認する必要があります。以下のようにMsiNTSuitePersonalで確認してみました。

<ExePackage Id="someId"
            Cache="no"
            Compressed="no"
            PerMachine="yes"
            Permanent="yes"
            Vital="yes"
            InstallCommand="/q"
            SourceFile="Redist\some.exe"
            DisplayName="Display something"
            InstallCondition="(MsiNTSuitePersonal = 1)"/>

以下は、WiX Burn Setup からのログです。

[093C:02E0][2013-04-01T17:14:21]i052: 条件 '(MsiNTSuitePersonal = 1)' は false と評価されます。

上記の条件は Wix 3.7 Burn の場合です。Windows 7 Home Basicでは常に結果がfalseになりますが、MSIで同じことを使用しても完全に機能します。以下のログを参照してください。

プロパティ (S): MsiSystemRebootPending = 1 プロパティ (S): VersionMsi = 5.00 プロパティ (S): VersionNT = 601 プロパティ (S): WindowsBuild = 7600 プロパティ (S): ServicePackLevel = 0 プロパティ (S): ServicePackLevelMinor = 0 プロパティ ( S): MsiNTProductType = 1 プロパティ (S): MsiNTSuitePersonal = 1

また、レジストリを使って同じ条件を調べてみたのですが、InstallCondition で文字列を比較するにはどうすればよいでしょうか。

私は次のように何かをしたいと思います。

<ExePackage Id="UWSOptionfor7Home"
            Cache="no"
            Compressed="no"
            PerMachine="yes"
            Permanent="yes"
            Vital="yes"
            InstallCommand="/q"
            SourceFile="Redist\UltiDev\UltiDev Web Server Setup.exe"
            DisplayName="UltiDev Web Server"
            InstallCondition="(IsWin7PersonalEdition = 'Terminal Server Personal')">
4

1 に答える 1

3

問題はMsiNTSuitePersonalWindows インストーラーの組み込みプロパティを参照していることだと思います。探している Burn の変数はNTSuitePersonal(注: MsiWindows インストーラーによって提供されないため、接頭辞が付いていません)。

完全なリストについては、組み込み変数の書き込みを参照してください。

于 2013-04-01T13:30:07.027 に答える