【问题标题】:"Msiexec REINSTALL=ALL REINSTALLMODE=vamus" is not cleaning old entries“Msiexec REINSTALL=ALL REINSTALLMODE=vamus”没有清理旧条目
【发布时间】:2011-01-17 07:43:22
【问题描述】:

我创建了一个安装程序“test.msi”。它是版本 1。 test.msi 包含 2 个组件“comp1”、“comp2” comp1 包含 2 个文件“comp1_file1”、“comp1_file2”

在 test.msi 的第 2 版中, --> 一个新组件添加了“comp3”。它包含 1 个文件“comp3_file1” --> "comp1" 组件已更新。删除“comp1_file2”文件并添加新文件“comp1_file3”现在它包含2个文件(comp1_file1,comp1_file3)

如果我使用“msiexec /i test.msi REINSTALL=ALL REINSTALLMODE=vamus”将 test.msi 从版本 1 升级到版本 2,在安装文件夹中我仍然可以看到版本 1 文件“comp1_file2”。

如果我使用“msiexec /i test.msi REINSTALL=ALL REINSTALLMODE=vamus”从版本 2 降级到版本 1,安装文件夹中存在版本 2 相关文件(comp3_file1、comp1_file3)。

如何在重新安装时删除旧条目(组件/文件)?

我正在使用 installshield 2008 高级版。

【问题讨论】:

  • 您需要提供更多信息...您使用什么应用程序来构建安装程序?您对组件的各种设置是什么?
  • 我正在使用 installshield-2008 高级版。
  • 我认为您不能在维修期间移除组件。组件在卸载或修改期间被删除。在修复期间,Windows Installer 只需重新安装组件。

标签: windows windows-installer installshield-2008


【解决方案1】:

传递组件是要走的路。 MS 在此处对其进行了描述:http://msdn.microsoft.com/en-us/library/aa372462%28v=vs.85%29.aspx

为了跟进 Chris 所说的话,使用重新安装模式可能会做一些令人讨厌的事情。如果您包含任何共享组件,则尤其如此。您可以对其他应用程序所依赖的组件进行后级处理,并且您会发现自己会根据正在使用的共享组件中的文件提示您停止看似无关的应用程序。如果可以的话,这是一件非常好的事情。

【讨论】:

    【解决方案2】:

    正如 Cosmin 建议的那样,您不能在修复过程中删除组件,但是您可以在开始安装新版本之前卸载以前的版本。

    使用 InstallShiled 2008 的一种方法是创建一个重大升级来执行此操作。 Video Tutorial.

    编辑

    正如克里斯托弗所说:有一些方法可以在小升级/维修中移除组件。 在下方评论。

    【讨论】:

    • 有一些方法可以在小升级/维修中移除组件。您可以使用带有条件表达式的传递组件,这些表达式在正确的情况下将评估为 false。你真的必须知道你在做什么。顺便说一句-如果您不了解“A”与“O”的后果,AMUS 是非常危险的。
    猜你喜欢
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 2019-05-24
    • 2013-06-23
    • 2012-06-24
    相关资源
    最近更新 更多