1

さまざまなクライアント用に製品を事前構成する書き込みバンドルを作成したいと考えています。インストールをできるだけ簡単にするために、同じパッケージをインストールするクライアントごとに異なるバンドルを作成しますが、レジストリ値のセットは異なります。

MsiPackageこれで、経由で入力を受け入れるが得られましたMsiProperty。このプロパティを、コマンド ラインで light を使用して渡す値に設定するデフォルトの書き込みブートストラップがあります-dproperty_a=value_a

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
    xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
    <Bundle Name="Product Name" 
            Version="!(bind.packageVersion.main)" 
            Manufacturer="!(bind.packageManufacturer.main)" 
            UpgradeCode="{MYGUID}">

        <WixVariable Id="property_a" Overridable="yes" Value=""/>

        <BootstrapperApplicationRef
            Id="WixStandardBootstrapperApplication.HyperlinkLicense">
            <bal:WixStandardBootstrapperApplication
                LicenseUrl="" LogoFile="bitmaps/logo.png"
                ThemeFile="burnTheme.xml"/>
        </BootstrapperApplicationRef>

        <Chain>
            <MsiPackage SourceFile="package.msi" Id="main">
                <MsiProperty Name="property_a" Value="!(wix.property_a)"/> 
            </MsiPackage>
        </Chain>
    </Bundle>
</Wix>

すべてが期待どおりに機能します。しかし、2 つの異なるバージョンをインストールしても、一方が他方を置き換えません。同じ製品を 2 回インストールします。

UpgradeCode同じものを使用することでこれを防ぐことができると思いました。UpgradeCode同じバンドルが 2 つインストールされている可能性があるのはなぜですか?

別のバージョンをインストールすると、インストール前に別のバージョンがアンインストールされることを確認できますか? AllowSameVersionUpgradesバーンバンドルのようなものはありますか?

4

2 に答える 2

0

アップグレードの何が問題なのかを確認する必要があります。メジャー アップグレードを構築していると仮定します。その場合、UpgradeCode を同じに保ち、ProductCode、製品バージョン、およびパッケージ コードを変更する必要があります。ビルド方法については、このブログを参照してください。既存の製品を置き換えるようにアップグレードする

于 2013-10-28T21:14:56.303 に答える