gpt4 book ai didi

windows-installer - 作为 msi 安装的一部分,如何卸载以前的版本?

转载 作者:行者123 更新时间:2023-12-04 07:45:04 28 4
gpt4 key购买 nike

我有一个打包为 MSI 的产品。当我的客户在现有版本的基础上安装我的产品的新版本时,由于自定义 VBS 操作,它无法正常工作,如下所述。我的问题是:如何更改我的 MSI,以便在顶部安装将始终预先完全卸载任何现有版本?

细节是:

我有一个产品,在不同的公司部署了各种版本。大约每年一次,我的每个客户都会收到我产品的新版本并部署到他们公司的工作站上。负责部署的人员希望他们可以在旧版本的基础上安装新版本,而不必在他们的安装包中包含卸载步骤。

msi 安装会创建一些文件并将其写入 [CommonApplicationData]\MyApp 文件夹。在执行期间,应用程序会在 [CommonApplicationData]\MyApp 文件夹中创建更多文件。在卸载过程中,我需要删除所有这些文件。由于它们不是由 msi 安装的,因此它们不会自动卸载,因此我创建了一个 vbs 脚本来删除该文件夹以及其中的任何其他内容。我在 ExecuteDeferred 中放置了一个命令来执行该 vbs:

...
RemoveFiles
RemoveFolders
CreateFolders
MoveFiles
InstallFiles
PatchFiles
If REMOVE="ALL" Then
REM line below is my custom script
call VBScript From Installation (MyApp_UninstallCleanup)
End
DuplicateFiles
BindImage
CreateShortcuts
...

到目前为止一切顺利,在安装和卸载时运行良好。但是,如果我在现有版本的顶部安装我的产品的新版本,事情似乎按以下顺序发生:
a) 安装新版本,在[CommonApplicationData]\MyApp文件夹下创建各种文件,在[Program Files]\MyApp...,覆盖旧版本的文件
b) 运行我的 vbs,删除 [CommonApplicationData]\MyApp 文件夹

我确实在我的新 MSI 的升级表中列出了旧版本的 GUID,除了这个自定义脚本之外,升级过程似乎工作正常。

产品本身非常小,所以如果安装程序总是在安装新版本之前完全删除以前的版本,那就没问题了。工作站上没有用户设置需要保留,文件也不大。因此,为简单起见,我希望卸载以前的版本,而不是仅使用已更改的位进行更新。

有没有办法可以更改我的新 MSI,以便它先卸载以前的版本?

值得注意的是,我有很多公司安装了包含自定义 vbs 的 MSI 的现有版本。因此,该解决方案确实需要能够应对现有已安装的 msi。

我使用 Wise Installation Express 7.0 来创建 MSI。

谢谢!!

(交叉发布 here)

最佳答案

附表 RemoveExistingProducts 行动前InstallInitialize行动:

In this case, the installer removes the old applications entirely before installing the new applications. This is an inefficient placement for the action because all reused files have to be recopied.

关于windows-installer - 作为 msi 安装的一部分,如何卸载以前的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11328611/

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