Installation 无法使MajorUpgrade与使用不同安装程序生成的安装程序一起工作
我有一个问题,让一个wix安装程序做一个主要的升级,当以前的版本安装程序是由一个不同的工具包。我的产品定义如下:Installation 无法使MajorUpgrade与使用不同安装程序生成的安装程序一起工作,installation,wix,Installation,Wix,我有一个问题,让一个wix安装程序做一个主要的升级,当以前的版本安装程序是由一个不同的工具包。我的产品定义如下: <Product Version="!(bind.FileVersion.baustatik.exe)" Id="*" Name="DIE Anwendungen" Language="0" Codepage="1252" Manufacturer="D.I.E. Software GmbH" UpgradeCode="6DCA3BAD-77E9-41AE-
<Product Version="!(bind.FileVersion.baustatik.exe)" Id="*"
Name="DIE Anwendungen"
Language="0"
Codepage="1252"
Manufacturer="D.I.E. Software GmbH"
UpgradeCode="6DCA3BAD-77E9-41AE-8F72-B92DE136C499">
<Package InstallerVersion="400"
Compressed="yes"
InstallScope="perMachine"
InstallPrivileges="elevated" />
<MajorUpgrade
AllowDowngrades="no"
AllowSameVersionUpgrades="no"
DowngradeErrorMessage="Es ist bereits eine neuere Version von [ProductName] installiert." />
<Bundle Name="DIE Anwendungen"
Version="!(bind.packageVersion.The32bitMsi)"
Manufacturer="D.I.E. Software GmbH"
UpgradeCode="6DCA3BAD-77E9-41AE-8F72-B92DE136C499"
HelpUrl="https://www.die.de/impressum"
Copyright="Copyright D.I.E. Software GmbH"
HelpTelephone="0800 343 2255"
UpdateUrl="https://www.die.de/downloads.aspx"
IconSourceFile="$(var.SolutionDir)applications\xfalt\xfalt.loader\baustatik.ico"
AboutUrl="https://www.die.de">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
<bal:WixStandardBootstrapperApplication
LogoFile="res/banner.png"
ThemeFile ="res/ClassicTheme.xml"
LocalizationFile="res/ClassicTheme.wxl"
SuppressOptionsUI="yes"
LicenseUrl=""/>
</BootstrapperApplicationRef>
。。。。。其他东西
上述操作将生成一个msi。msi被链接在一个包中。捆绑包的定义如下:
<Product Version="!(bind.FileVersion.baustatik.exe)" Id="*"
Name="DIE Anwendungen"
Language="0"
Codepage="1252"
Manufacturer="D.I.E. Software GmbH"
UpgradeCode="6DCA3BAD-77E9-41AE-8F72-B92DE136C499">
<Package InstallerVersion="400"
Compressed="yes"
InstallScope="perMachine"
InstallPrivileges="elevated" />
<MajorUpgrade
AllowDowngrades="no"
AllowSameVersionUpgrades="no"
DowngradeErrorMessage="Es ist bereits eine neuere Version von [ProductName] installiert." />
<Bundle Name="DIE Anwendungen"
Version="!(bind.packageVersion.The32bitMsi)"
Manufacturer="D.I.E. Software GmbH"
UpgradeCode="6DCA3BAD-77E9-41AE-8F72-B92DE136C499"
HelpUrl="https://www.die.de/impressum"
Copyright="Copyright D.I.E. Software GmbH"
HelpTelephone="0800 343 2255"
UpdateUrl="https://www.die.de/downloads.aspx"
IconSourceFile="$(var.SolutionDir)applications\xfalt\xfalt.loader\baustatik.ico"
AboutUrl="https://www.die.de">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
<bal:WixStandardBootstrapperApplication
LogoFile="res/banner.png"
ThemeFile ="res/ClassicTheme.xml"
LocalizationFile="res/ClassicTheme.wxl"
SuppressOptionsUI="yes"
LicenseUrl=""/>
</BootstrapperApplicationRef>
我已经证实了这一点
-我使用相同的升级代码
-我正在为每次更新构建一个新的产品代码(*)
-我正在使用相同的语言id(语言:0)
- !(bind.FileVersion.baustistik.exe)生成我期望的版本信息
当我像这样构建安装程序时,安装,增加版本号,构建和安装(都使用wix),主要的升级就会发生
当我为以前的版本(使用“高级安装程序”生成的版本)安装安装程序时(升级代码相同),然后安装使用wix生成安装程序的较新版本时,主升级不起作用。i、 e:没有从以前版本中删除任何文件或startmenu条目,我在控制面板中有两个条目
有什么建议可能导致这种情况吗
(编辑)
我照博格丹的建议做了。但是,完整日志没有任何有用的信息
FindRelaten产品:
MSI(c)(8C:88)[17:34:20:741]:执行操作:FindRelatedProducts
MSI(c)(8C:88)[17:34:20:741]:注:1:22052:3:ActionText
Aktion 17:34:20:查找最新产品。他是一个非常聪明的人
妊娠期17:34:20:发现最新产品。
Aktion beendet um 17:34:20:查找最新产品。吕加贝维特1号
。。。后来:
MSI(s)(2C:04)[17:34:24:762]:执行操作:FindRelatedProducts
MSI(2C:04)[17:34:24:762]:注:1:22052:3:ActionText
妊娠期17:34:24:发现最新产品。
MSI(2C:04)[17:34:24:762]:跳过FindRelatedProducts操作:已在客户端完成
RemoveExistringProducts提供:
Aktion gestartet um 17:34:24:移除现有产品。
MSI(2C:04)[17:34:24:841]:注:1:22052:3:错误
MSI(2C:04)[17:34:24:841]:注:1:22282:3:错误4:从错误中选择消息
MSI(2C:04)[17:34:24:841]:注:1:22052:3:错误
MSI(2C:04)[17:34:24:841]:注:1:22282:3:错误4:从错误中选择消息,其中错误=23
MSI(2C:04)[17:34:24:841]:注:1:22052:3:错误
MSI(2C:04)[17:34:24:841]:注:1:22282:3:错误4:从错误中选择消息,其中错误=16
MSI(2C:04)[17:34:24:841]:注:1:22052:3:错误
MSI(2C:04)[17:34:24:841]:注意:1:22282:3:错误4:从错误中选择消息,其中错误=21
Aktion beendet um 17:34:24:删除现有产品。吕加贝维特1号
关于perUser/perMachine:
在我的(wix)包(参见代码)中,我有“InstallScope='perMachine'”,在“AdvancedInstaller”中,我有“安装类型:仅每台机器”——我假设这是相同的
还有其他想法吗
(编辑2)
我已经按照PhilDW的建议做了,并使用orca打开了新旧msi的升级表。我确实发现了以下几点
旧msi:
新msi:
然而,我不知道该如何理解这一点。有了这些信息,有人知道为了升级旧的msi,我必须在wix代码中添加什么吗 我解决问题的方法是手动设置预定义的重新安装
和重新安装模式
属性,如下所示
<Product>
<!-- ... your code ... -->
<SetProperty Id="REINSTALL" Value="ALL" After="FindRelatedProducts">Installed AND REMOVE<>"ALL"</SetProperty>
<SetProperty Id="REINSTALLMODE" Value="omus" After="FindRelatedProducts">Installed AND REMOVE<>"ALL"</SetProperty>
<!-- ... your code ... -->
</Product>
安装并删除“全部”
安装并删除“全部”
。。。其中,OMU
指的是这些代码:
o:如果文件丢失或版本较旧,请重新安装。
m:重写注册表表中所有需要的注册表项,这些注册表项将转到
HKEY_本地_机器
或
HKEY_类_根
注册表配置单元。
u:重写注册表表中所有需要的注册表项,这些注册表项将转到
HKEY_当前用户
或
香港大学用户
注册表配置单元。
s:重新安装所有快捷方式并重新缓存所有图标,覆盖所有现有快捷方式和图标
您也可以使用e
或a
代替o
:
e:如果文件丢失,或者是相同或更旧的版本,请重新安装。
答:强制重新安装所有文件,无论校验和或版本如何
(摘自Microsofts development center)即使升级代码相同,如果软件包的安装类型不同(每个用户或每台机器,这种情况经常发生),或者安装语言不同(您已经检查过),主升级也可能失败
您可以安装新的MSI,在安装过程中,在日志中搜索RemoveExistingProducts和FindRelatedProducts。在这些标准操作的旁边,您将看到一条明确的消息,说明为什么跳过升级。Bogdan走上了正确的道路。但是,日志将指示是否安装了相关的产品,它将显示其产品代码并说明有关其他上下文的内容,而这些内容不在日志中。这意味着您需要直接查看MSI文件中的升级表,以确保最小/最大字段中的版本检查是正确的。在发布的数据中,我看不到验证旧产品的实际版本和升级将搜索的版本的任何内容。这也不会伤害到你的MSI中是否有一个升级表。此处的文档:
您还可以检查语言是否与旧产品匹配,以及属性是否没有OnlyDetect集(不太可能,但要彻底)
<