链式安装
考虑一个我的安装罩软件的情况,该软件通过链式安装来安装.msi。假设它是设置1。 现在,我还有另一个设置设置-2通过链式安装安装相同的.msi。
现在,如果我卸载了一个设置(setup-1或setup-2),则它正在卸载链式的MSI。因此,另一个设置无法使用导致问题的情况。只有在卸载两者时,才应卸载。它应该像共享组件一样。
如何避免这种情况?
Consider a case where I have installshield software which installs a .msi through chained installation. Let's say it's Setup-1.
Now I have another setup Setup-2 which installs the same .msi through chained installation.
Now if I uninstall either of the setup (Setup-1 or Setup-2), it is uninstalling the chained msi. So the other setup cannot use it which leads to a problem. Only when both are uninstalled, it should be uninstalled. It should be something like shared components.
How to avoid this scenario?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对于这种情况,最好使用先决条件的概念而不是链式包装。
什么是先决条件?
这是一个单独的安装软件包,其中包含您应用程序运行所需的资源。您的主安装程序将检查是否已安装,并在计算机中缺少它时将其安装。
安装Setup-2时,应该看到已安装软件包并跳过它。
当您卸载安装1或2时,不应删除先决条件。因此,您的最终用户也需要手动卸载先决条件包。
这就是必须如何部署共享的共享组件。诸如VC ++ REDIST,SQL Server Express等诸如...
For this scenario, it is better to use the concept of prerequisites instead of chained packages.
What is a prerequisite?
This is a separate installation package that contains the resources required by your application to run. Your main installer will check if this is installed and install it if it is missing from the machine.
When you install Setup-2 it should see the package is already installed and skip it.
When you uninstall Setup-1 or 2 the prerequisite should not be removed. So your end-user would need to manually uninstall the prerequisite package too.
This is how must common shared components are deployed. Things like VC++ Redist, SQL Server Express, etc...
InstallShield具有一个名为Suite Installer的项目类型,该项目类型提供用于安装多个软件包的Bootstrapper/Chainer。功能之一是共享软件包的概念,在该软件包中,installshield将参考将软件包计数并像您想要的那样删除。
https:///docs.revenera.com/installshield2helplibbibrary/sesharedpppppage >
InstallShield has a project type called Suite Installers which provides bootstrapper/chainer for installing multiple packages. One of the features is the concept of a shared package where InstallShield will reference count the package and remove it like you want.
https://docs.revenera.com/installshield22helplib/helplibrary/SteSharedPackages.htm