【问题标题】:MSI: How to add rows to 'Upgrade' table in c#?MSI:如何在 c# 中向“升级”表添加行?
【发布时间】:2014-11-19 11:50:13
【问题描述】:

我有一个 Visual Studio 安装项目。 构建 MSI 后,我应用转换。它将 2 行添加到“升级”表(属性 P1、P2)并从

修改属性 SecureCustomProperties
PREVIOUSVERSIONSINSTALLED;NEWERPRODUCTFOUND

PREVIOUSVERSIONSINSTALLED;NEWERPRODUCTFOUND;P1;P2

如何在 VS Setup 中避免应用这种转换?

【问题讨论】:

  • 你无法避免。一个典型的答案是使用 VBScript 进行后期构建步骤。 Windows SDK/Kit 有一些 MSI VB 脚本,其中之一是 WiRunSql.vbs。给它 MSI 和 SQL 的路径,它会更新你的 MSI。在您的情况下,您需要几个 Insert 语句来做到这一点。 msdn.microsoft.com/en-us/library/aa372021(v=vs.85).aspx
  • 我已经做到了。我编写了脚本来清理目录表、重新排序序列、修复属性、修复快捷方式等等。那是我一生中再也回不来的一年。

标签: visual-studio installation windows-installer


【解决方案1】:

老实说,真的,真的 - 请花时间转换为 Wix。看到这个类似的帖子: Add remove programs show increased size after each REINSTALL of my msi product

【讨论】:

    【解决方案2】:

    使用 VS Setup 无法避免这种情况。这是该工具的众多设计限制之一。要么通过 postbuild hack 使用它,要么使用 WiX 等其他工具重写安装程序。

    我维护一个名为 IsWiX 的开源项目。这让项目模板和视觉设计师可以轻松完成此类任务。

    【讨论】:

    • 好的,会试试的,谢谢。这里是“视觉设计师”——是自定义对话框的设计师?
    • 很遗憾,没有。这是一个巨大的努力。主要的视觉设计器用于组件创作,也就是“文件和文件夹”。项目模板确实具有通过取消注释一行 XML 来插入自定义对话框的模式。但是您必须手动编写 XML 才能将控件插入到对话框的主体中。如果您想通过屏幕共享进行免费演示,请给我发电子邮件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    相关资源
    最近更新 更多