gpt4 book ai didi

installation - 如何确定 Windows Installer 正在执行升级而不是首次安装?

转载 作者:行者123 更新时间:2023-12-02 23:53:37 32 4
gpt4 key购买 nike

我有一个安装,如果应用程序退出,它会升级该应用程序的先前版本。当安装处于升级模式时,我想跳过某些操作。如何确定安装是在升级模式还是首次安装模式下运行?

我正在使用 Wise Installer,但我认为这并不重要。我假设 Windows Installer 有一个在安装程序处于升级模式时设置的属性。我只是似乎找不到它。如果该属性存在,我假设我可以在条件语句中使用它。

最佳答案

您能详细说明一下您使用什么类型的工具来创建此安装程序吗?

我使用 Windows Installer XML( WIX )。在 WIX 中你可以这样做:

  <!-- Property definitions -->
<?define SkuName = "MyCoolApp"?>
<?define ProductName="My Cool Application"?>
<?define Manufacturer="Acme Inc."?>
<?define Copyright="Copyright © Acme Inc. All rights reserved."?>
<?define ProductVersion="1.1.0.0"?>
<?define RTMProductVersion="1.0.0.0" ?>
<?define UpgradeCode="{EF9D543D-9BDA-47F9-A6B4-D1845A2EBD49}"?>
<?define ProductCode="{27EA5747-9CE3-3F83-96C3-B2F5212CD1A6}"?>
<?define Language="1033"?>
<?define CodePage="1252"?>
<?define InstallerVersion="200"?>

并定义升级选项:

<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion Minimum="$(var.ProductVersion)"
IncludeMinimum="no"
OnlyDetect="yes"
Language="$(var.Language)"
Property="NEWPRODUCTFOUND" />

<UpgradeVersion Minimum="$(var.RTMProductVersion)"
IncludeMinimum="yes"
Maximum="$(var.ProductVersion)"
IgnoreRemoveFailure="no"
IncludeMaximum="no"
Language="$(var.Language)"
Property="OLDIEFOUND" />

</Upgrade>

然后,您可以根据您想要执行的操作使用 OLDIEFOUNDNEWPRODUCTFOUND 属性:

<!-- Define custom actions -->
<CustomAction Id="ActivateProduct"
Directory='MyCoolAppFolder'
ExeCommand='"[MyCoolAppFolder]activateme.exe"'
Return='asyncNoWait'
Execute='deferred'/>

<CustomAction Id="NoUpgrade4U"
Error="A newer version of MyCoolApp is already installed."/>

上面定义的操作必须在InstallExcecuteSequence中定义

<InstallExecuteSequence>
<Custom Action="NoUpgrade4U"
After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
<Custom Action="ActivateProduct"
OnExit='success'>NOT OLDIEFOUND</Custom>
</InstallExecuteSequence>

关于installation - 如何确定 Windows Installer 正在执行升级而不是首次安装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/145900/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com