gpt4 book ai didi

WiX:使用 CustomAction 强制启动卸载以前

转载 作者:行者123 更新时间:2023-12-05 00:06:54 26 4
gpt4 key购买 nike

我正在编写我们产品的新的重大升级。
在我的安装程序中,我首先找到以前版本的配置设置,然后我想卸载以前的版本。

我找到了几份指南,告诉我应该如何制作适合此类升级的 MSI。

然而,以前的不是MSI。
这不符合最佳实践。

但是,它确实在注册表 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{GUID} 中指定了 UninstallString。

使用 RegistrySearch,我可以轻松找到以下命令,并将其存储在 UNINSTALL_CMD 中。

RunDll32 C:\PROGRA~1\COMMON~1\INSTAL~1\PROFES~1\RunTime\10\01\Intel32\Ctor.dll,LaunchSetup 
"C:\Program Files\InstallShield Installation Information\{GUID}\setup.exe"
-l0x9 -removeonly 4:

我无法掌握执行实际卸载所需的 CustomAction。
       <CustomAction Id="ca.UninstPrev" Property="UNINSTALL_CMD" ExeCommand="" />

MSI 日志说:
信息 1721。此 Windows 安装程序包存在问题。无法运行完成此安装所需的程序。请联系您的支持人员或软件包供应商。操作:ca.UninstallPrevious,位置:RunDll32 C:\PROGRA~1\COMMON~1\INSTAL~1\PROFES~1\RunTime\10\01\Intel32\Ctor.dll,LaunchSetup "C:\Program Files\InstallShield Installation信息{GUID}\setup.exe"-l0x9 -removeonly, 命令:

有人看到我在这里做错了吗?

问候
莱夫

最佳答案

我在 Continental Airlines 做了几年应用程序重新打包,在那里我将 SMS 推送到一个 18,000 个座位的森林。我经常有一个未使用 MSI 安装的遗留应用程序,我需要使用 MSI 重新部署,一旦完成,我就支持 future 的重大升级。

这些以前部署的应用程序通常具有非常损坏和行为不端的卸载程序。我不会调用这些,而是​​使用 SMS 查询林以获取所有已部署的版本。然后,我会将这些旧包部署到集成实验室,并计算出每个安装程序对机器做了什么,并编写了我自己的聚合“强制清理”自定义操作,该操作能够从机器上删除应用程序的各种版本。

我在 CostInitialize 之前执行了这个自定义操作,这样当新的 MSI 执行它的成本时,它就不会受到机器上不再存在的废话的影响。这对我有用,因为我将包作为系统推送,我不必担心海拔问题。如果您想完全符合 UAC,您需要从 prereq 包运行此自定义代码,并让您的用户手动运行它或将其连接到 bootstrap 以在您的 MSI 之前运行。

关于WiX:使用 CustomAction 强制启动卸载以前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2702340/

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