问题如下:我在 MSI 卸载之前调用了自定义卸载程序。正确关闭我的应用程序后,它会调用msiexec
使用 Windows Installer 卸载 MSI。
这是通过执行“msiexec /x{PRODUCT_CODE} /promptrestart”之类的命令来完成的。
这里有一点很重要——如果卸载后系统没有重新启动,然后用户再次安装该应用程序,那么下次重新启动后它的一些文件将被删除,所以这是不可接受的。重新启动是必需的,但是,我需要迅速、自动和无条件的重新启动是邪恶的,永远不应该使用。
因此,上面的调用会显示 STUPID“卸载/修复”对话框。我不想要这个。当我使用“msiexec /x{PRODUCT_CODE} /qr /promptrestart”时,它会很好地卸载,但它拒绝之后重新启动。
我已阅读有关设置 ARPNOREPAIR 属性的信息。
但是给出这个答案的白痴不会关心说在哪里以及如何设置该属性。甚至……财产属于哪里,它是什么的财产? MSI 文件?
那么,也许这是实现这一目标的另一种方法,比如从我的代码中调用重新启动的提示,但是......如何?卸载程序应该删除我的所有文件,直到那一刻。也许卸载过程完成后可以执行某种脚本?
(还有一个问题,Windows Installer 不会删除我的应用程序创建的所有文件和目录。如果我可以执行一些代码来更好地清理,那就太好了。)
UPDATE我看到前面有两条路径:制作一个在卸载结束后运行的脚本(例如使用注册表或任务计划程序或 IDK),使用 Win32 API 修改 MSI 文件,因为据我所知,可以通过这种方式更改其属性。
问题: 先问几个问题。
-
重启管理器: 你熟悉吗the 重启管理器MSI的特点 https://stackoverflow.com/questions/54871192/adding-launch-conditions-to-microsoft-visual-studio-installer-projects-check-ap/54871579#54871579?旨在帮助关闭和重新启动
应用程序无需重新启动。我会尽快给它
撇去?我认为这才是你真正的解决方案?
-
Alternative MSI Tools: There are many tools available for creating MSI setups https://stackoverflow.com/questions/50225031/windows-service-not-shown-in-add-remove-programs-under-control-panel/50229840#50229840. This link also contains further links to a summary of the shortcomings of Visual Studio Installer Projects.
- Using 免费的开源 WiX 工具集 https://stackoverflow.com/a/25005864/129130- 例如 -您可以更改 MSI 对话框 http://neilsleightholm.blogspot.com/2008/08/customised-uis-for-wix.html. Github 样本 https://github.com/skullpsg/Wix_installer/tree/master/BlogCustomAction/BlogCustomAction. 所以问题1 https://stackoverflow.com/questions/597025/how-to-build-a-minimal-wix-installer-ui-without-a-license-page. 所以问题2 https://stackoverflow.com/questions/2052789/adding-first-custom-dialog-box-to-wix-in-visualstudio-environment。这是WiX 工具集官方网站 http://wixtoolset.org/.
- 添加我自己的答案:更改 Wix 对话框的文本颜色 https://stackoverflow.com/questions/52654935/changing-text-color-to-wix-dialogs(请略读)
- 我不熟悉如何更改 Visual Studio 安装程序项目中的对话框。商业产品高级安装程序 https://www.advancedinstaller.com and 安装盾 https://www.installshield.com当然可以改变对话框。
-
Services:您正在安装的产品的性质是什么?例如,它有很多服务吗?如果您使用正确的工具来构建 MSI,则可以通过 MSI 表关闭和重新启动服务。
-
重新安装模式:您的设置是否使用自定义的重新安装模式? (某些设置可能会导致更多重新启动提示)。
-
自定义卸载程序:您如何调用您的自定义卸载程序?手动还是使用“添加/删除程序”注册卸载命令行? (不推荐后一种方法)。
ARP 小程序与 MSI 对话框: The ARPNOREPAIR property https://learn.microsoft.com/en-us/windows/desktop/msi/arpnorepair在 MSI 本身中设置 - 在属性表中。它只影响 Windows 中看到的内容Add / Remove Programs
小程序(ARP = Add / Remove Programs
),而不是通过命令行调用 MSI 时看到的内容。然后您会看到该 MSI 本身定义的对话框(这是可以改变的——这并不完全是小事)。
ARP/添加删除程序小程序:下面对该小程序的快速回顾:
Links:
- MSI 安装程序未更新正在使用的文件(Visual Studio 安装程序项目) https://stackoverflow.com/questions/51385973/in-use-files-not-updated-by-msi-installer-visual-studio-installer-project/51387298#51387298
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)