我们有一个内部有几个可执行文件的软件。其中一个可执行文件是Windows服务,它不会经常更改,通常我们会发布主要可执行文件的许多更新,但服务器版本在安装程序中是相同的。
首次安装服务或使用较新版本升级时,我们需要运行自定义操作。我们设法解决了第一个安装部分,但是我们不知道如何确定我们现在安装的版本比已经存在的版本更新。 if(newver> oldver)运行自定义操作的排序。
提前谢谢你 - 杰克
答案 0 :(得分:3)
您可以尝试使用套餐的升级规则。更多详情:How to implement WiX installer upgrade?
Rob Mensching(链接线程中的第二个答案)显示了升级规则的示例。您应该先熟悉Upgrade table和how upgrade rules work。在WiX中没有简单的答案或快速解决方法。
基本上,您应该有2个升级规则
之后,您可以使用旧版本属性来调整自定义操作。例如,如果属性名为OLDERVERSIONFOUND,则自定义操作条件可以是:
OLDERVERSIONFOUND
或类似
OLDERVERSIONFOUND > "1.0.0"
答案 1 :(得分:2)
您最好的选择是将“服务”版本存储在注册表中的某个位置,在升级期间搜索该注册表值,并在新手时运行您的CA> oldver(以及CA还应将所述注册表值更新为newver)
请注意Custom Actions are (generally) an admission of failure。我总是试图将安装程序的配置部分分离为预安装(对于进行部署的系统管理员)或安装后(对于交互式安装)步骤 - 通常是单独的可执行文件。
没有自定义操作的声明式安装 更可靠 - 如果您可以弄清楚如何重写服务以便不再需要自定义操作,那么您将会更好长期(当你现在面临施压的压力时,这无济于事,但是未来的发布会有所考虑)