【问题标题】:msi Installer to run twicemsi 安装程序运行两次
【发布时间】:2011-03-25 04:11:17
【问题描述】:

我有一个通过 msi 安装的程序。 msi 是使用 VS2008 部署项目构建的,并且具有自定义操作以在安装完成后运行该程序。

msi 运行后,我可以简单地更新版本号,生成新的产品代码,然后可以在同一台 PC 上再次运行 msi。但是,我想要的是能够在同一台 PC 上再次运行 msi(不使用 msi 修复)并让它再次重新安装软件(即使没有任何改变)。这可能吗?

【问题讨论】:

    标签: visual-studio-2008 windows-installer custom-action


    【解决方案1】:

    编辑:我读错了。

    单次

    【讨论】:

      【解决方案2】:

      不,这是不可能的。即使您更改了 ProductCode 和 ProductVersion,它第二次运行时也将始终以修复模式运行。甚至打补丁的方法都是实现修复模式,基本上是使用补丁文件作为转换。

      实现这一点的唯一方法是以某种方式阻止应用程序进入 ARP,但我怀疑这会破坏应用程序的弹性,在这种情况下,您可能不想使用 MSI 作为您的交付系统。

      我过去曾使用纯 InstallScript 设置完成此操作。设置完成后,我会删除与 ARP 相关的注册表项,这样另一个安装就会像新安装一样。

      【讨论】:

        【解决方案3】:

        您可以通过从 InstallExecuteSequence 表中删除 RegisterProduct 操作、RegisterUser 操作、PublishProduct 操作和 PublishFeatures 操作来完成此操作。通过删除这些标准操作,应用程序将不会在系统的 MSI 数据库中注册,您可以像首次安装一样反复运行和重新运行安装。

        MSDN:
        Adding and Removing an Application and Leaving No Trace in the Registry

        【讨论】:

        • 谢谢,效果很好! AdvtExecuteSequence 表中还有一些条目也需要删除。
        【解决方案4】:

        使用实例转换进行第二次安装 http://msdn.microsoft.com/en-us/library/aa367797(VS.85).aspx

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-04
          • 2017-10-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多