2016-10-20 7 views
0

特定の環境変数が設定されていない場合にのみアップグレード要素を実行する方法がありますか?環境変数に基づいてWiXのアップグレード要素を条件付きで実行する方法

環境変数が検出された場合、インストーラは新しいソフトウェアを既存のものと並べてインストールする必要があります。しかし、この

<Feature 
    Id="ConditionalUpdate" 
    Title="Upgrade" 
    Absent="allow" AllowAdvertise="no" 
    Level="1" > 
    <Condition Level="0" ><![CDATA[%CERTAIN_VARIALBE]]></Condition> 
    <ComponentGroupRef Id="FakeComponent" /> 
</Feature> 

Feature使用してProductから

<Fragment> 
    <Upgrade Id="$(var.Guid7)"> 
    <UpgradeVersion Minimum="$(var.Version).0" Maximum="$(var.Version).2" IncludeMinimum="yes" IncludeMaximum="no" Property="PREVIOUSREVISIONINSTALLED" /> 
    </Upgrade> 
    <ComponentGroup Id="FakeComponent" /> 
</Fragment> 

そして、それを呼び出す:Upgrade以来

Condition要素を取ることはありません、私はこのような断片でそれを入れてみました常に環境変数が定義されているかどうかにかかわらず、アップグレードコードが毎回更新されるように思われます。

どのようにこの問題を解決するためのアイデアですか?どんな助けもありがとうございます。

答えて

1

これは本質的に、この1と同じ質問です:あなたは、環境変数に基づいて決めることを除いて

How to let the user choose between upgrade or full install?

https://msdn.microsoft.com/en-us/library/windows/desktop/aa368012(v=vs.85).aspx

が、私はあなたが必要となる正確な条件を引用することはできません正確なチェックを知らなくても:あなたのケースでは、環境変数を使用して、標準のWindowsインストーラ条件である%のENVにRemoveExistingProductsのアクションを調整することができます。

トランスフォームのソリューションが適切かもしれませんが、環境全体を知らなくても難しいと言えます(おそらく既に他のものにトランスフォームを使用している可能性があります)。

関連する問題