InstallShield:如何在卸载后留下驱动程序?

InstallShield: How to leave a driver after uninstall?

我们的安装程序会为某些自定义硬件安装 USB 驱动程序。在开发过程中,我们经常卸载一个版本并重新安装另一个(通常是较新的版本,但有时是较旧的 - 驱动程序永远不会改变。)尽管组件配置页面上标记了 InstallShield "Component",但驱动程序是事实上删除。

安装新版本时,再次重新安装驱动程序,但由于之前已被删除,因此找到了none个USB设备。如果我们物理移除并重新安装 USB 模块,驱动程序会正确加载。

如何让 InstallShield 在卸载过程中不理会驱动程序?说实话,在最坏的情况下,这会带来不便,但如果 InstallShield 忽略 "Uninstall No" 的显式配置设置,则会产生很大的问题。

您可以将与驱动程序关联的组件标记为永久组件,但这样就无法将其删除。

听起来您需要以不同的方式构建事物。您可以使用一种在升级过程中不会完全卸载东西的方法(例如计划延迟的 RemoveExistingProducts 的主要升级),或者将驱动程序拆分到一个单独的包中,这样就不需要尝试卸载驱动程序。

如果拆分包,您可以安装驱动程序包作为先决条件依赖项,然后从程序和功能中手动卸载,或者您可以利用 Suite 项目并只升级非驱动程序包。使用这两种方法中的任何一种,您都不必担心在非驱动程序包中安排 RemoveExistingProducts。