2011-10-24 64 views
2

我创建了我的WIX安装选项,进行升级以便删除以前的DLL 但是,当我进入控制面板并转至 添加/删除程序部分时,以前的版本仍然存在。WIX程序仍然存在于控制面板的添加/删除部分

如何从此添加/删除部分删除此前一个图标?

.....

针对以下 对不起,我仍然无法得到这个工作,以前的版本仍然在添加显示评论/删除,当我升级程序部分, 下面是一些代码

我确实有编号开始为“*”,但现在我只需要改变产品ID,当我让我的未来建设

<Upgrade Id="$(var.UpgradeCode)"> 
    <UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="yes" Property="NEWERVERSIONDETECTED"/> 
    <UpgradeVersion Minimum="1.0.0" 
        IncludeMinimum="yes" 
        OnlyDetect="no" 
        Maximum="$(var.ProductVersion)" 
        IncludeMaximum="no" 
        Property="PREVIOUSVERSIONSINSTALLED" /> 
</Upgrade> 
+1

如果您安装了两个相同的.msi版本,则没有将UpgradeCode设置为正确。在这里阅读更多。 http://blogs.msdn.com/b/johnls/archive/2006/11/13/how-to-upgrade-software-with-a-windows-installer-package.aspx –

+0

我同意Morten,但我认为您在产品ID和升级ID之间感到困惑。升级ID将在您的产品元素中设置。这是您检测以前版本时需要使用的一个。 –

回答

0

升级ID必须是在S您想要升级的版本之间的差异。如果你想进行一次重大升级,为您删除以前的安装,然后安装新版本,必须更改属性是产品ID

一个“*”可使由维克斯

生成一个新的GUID你想这样的事情:

<!--Product --> 
<Product Id="*" Name="$(var.Product.Name)" Language="$(var.Product.Lang)" Version="$(var.Product.Version)" Manufacturer="$(var.Product.Manufacturer)" UpgradeCode="{Replace me with a constant Upgrade Guid}"> 
<Package InstallerVersion="$(var.Package.InstallerVersion)" Compressed="yes" Platform="$(var.Platform)" /> 


    <!--Condition Messages--> 
    <Condition Message="A newer version of $(var.Product.Name) is already installed. Exiting installation."> 
     <![CDATA[Installed OR NOT NEWER_VERSION_FOUND]]> 
    </Condition> 

<!-- Upgrade Table --> 
<Upgrade Id="{Replace me with a constant Upgrade Guid}"> 

    <UpgradeVersion 
    Property="OLD_VERSION_FOUND" 
    Minimum="0.0.0.0" 
    Maximum="$(var.Product.Version)" 
    IncludeMinimum="yes" 
    IncludeMaximum="no" 
    OnlyDetect="no" 
    IgnoreRemoveFailure="yes" 
    MigrateFeatures="yes" 
    Language="1033" /> 

    <UpgradeVersion 
    Property="NEWER_VERSION_FOUND" 
    Minimum="$(var.Product.Version)" 
    IncludeMinimum="no" 
    OnlyDetect="yes" 
    Language="1033" /> 

</Upgrade> 

<!--Removes the old version and then installs the new version--> 
<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallInitialize"></RemoveExistingProducts> 
    <InstallExecute After="RemoveExistingProducts"></InstallExecute> 
</InstallExecuteSequence> 

你还应该注意,你不能切换每个用户和每台机器之间安装版本之间。

相关问题