0

我将一个 .NET/WiX 产品(“ SparkleShare ”)分叉成一个完全不同的产品(“ CmisSync ”)。

如果他们愿意,用户应该能够安装这两种产品。

不幸的是,当安装了一个时,另一个无法安装:

此产品的另一个版本已安装此版本的安装无法继续。要配置或删除此产品的现有版本,请使用控制面板上的添加/删除程序

我必须改变什么?
它是 Visual C# 2010 Express 中的 .NET 4.5 多项目解决方案,由 WiX 生成的安装程序。

我想经常在项目之间共享代码,所以源代码必须尽可能保持相同。出于这个原因,许多“SparkleShare”字符串仍然存在,这是我故意的,我只想在必要的地方进行修改。

这是我认为SparkleShare.wxs有趣的部分:

<Product Name='CmisSync' Id='184950D5-67F6-4D06-9717-7E2F1607A7B0' UpgradeCode='D3DF1D99-87F5-47A7-A349-863DD6E4B73A'
Language='1033' Codepage='1252' Version='0.8.1' Manufacturer='SparkleShare'>

<Package Id='*' Keywords='Installer' Description="CmisSync Setup" Manufacturer='CmisSync'
  InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />

<Media Id='1' Cabinet='SparkleShare.cab' EmbedCab='yes' DiskPrompt='SparkleShare CAB' />
<Property Id='DiskPrompt' Value="SparkleShare Bundle CAB Installation" />

<Directory Id='TARGETDIR' Name='SourceDir'>
  <Directory Id='ProgramFilesFolder' Name='PFiles'>
      <Directory Id='INSTALLDIR' Name='CmisSync'>
        <Component Id='SparkleShare.exe' Guid='0DA582D5-4ABE-4251-9F62-E7DEA76F10E1'>
          <File Id='SparkleShare.exe' Name='SparkleShare.exe' Source='!(wix.root)\bin\SparkleShare.exe' KeyPath='yes' DiskId='1' />

我只改变了写“CmisSync”的地方。我还必须改变什么?

4

1 回答 1

0

您将需要更改元素中的 guidUpgradeCodeId属性。ProductUpgradeCode决定了它是同一个应用程序。更改后UpgradeCode,请勿再次更改,否则将无法检测和删除现有版本。Id需要更改每个版本的应用程序以及Version属性

于 2013-01-31T10:38:58.960 回答