我正在更改我们的安装程序,以支持同时安装多个版本的软件。
这导致我们的产品的几个早期版本安装的情况,我需要让用户选择应该升级哪个当前版本。
目前,我正在使用名为OLDERFOUND的属性来检测它们是否是旧版本:
<Upgrade Id='$(var.UpgradeCode)'>
<UpgradeVersion
OnlyDetect='yes'
Property='OLDERFOUND'
Minimum='0.0.0'
Maximum='$(var.Version)'
IncludeMaximum='no'
IncludeMinimum='yes' />
</Upgrade>
在OLDERFOUND上显示一个带有组合框的对话框。我使用c#CustomAction动态添加项目到组合框:
[CustomAction]
public static ActionResult FillVersionList(Session xiSession)
{
View view = xiSession.Database.OpenView("SELECT * FROM ComboBox");
view.Execute();
Record record = xiSession.Database.CreateRecord(4);
//CURRENTVERSIONS is the name of the combobox property
record.SetString(1, "CURRENTVERSIONS");
record.SetInteger(2, 1);
record.SetString(3, "foo");
record.SetString(4, "foo");
view.Modify(ViewModifyMode.InsertTemporary, record);
record = xiSession.Database.CreateRecord(4);
record.SetString(1, "CURRENTIVARVERSIONS");
record.SetInteger(2, 2);
record.SetString(3, "bar");
record.SetString(4, "bar");
view.Modify(ViewModifyMode.InsertTemporary, record);
view.Close();
return ActionResult.Success;
}
我无法弄清楚该怎么做
我试图找出一种从注册表中读取以获取所有版本的方法(我为每个版本安装了一个注册表项),但是没有想出任何东西。我不知道如何指定要更新的早期版本。
答案 0 :(得分:0)
我不明白为什么您希望用户选择要升级的版本。分发新产品时,它将具有与之前安装相匹配的升级代码/产品/包代码组合,并且只能用于升级该安装。您无法根据用户的决定更改该行为。
在此处阅读有关升级代码/产品代码的更多信息: