编辑msi数据库表

时间:2012-12-03 12:50:15

标签: c# msbuild installer wix windows-installer

如何使用msidb.exe添加或删除msi数据库表的条目,而不是使用orca.Is有任何命令行,如下所示

msidb.exe [msipath][importingFilepath]

添加文件后,应更新msi表中的相应条目

谢谢,

2 个答案:

答案 0 :(得分:5)

我假设您希望在C#中执行此操作,因为您包含了C#标记。 WiX有一个名为Deployment Tools Foundation的组件(DTF - 你会在开始菜单中找到它和SDK chm),它提供了一个出色的MSI互操作。

考虑一下:

using Microsoft.Deployment.WindowsInstaller;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            using( var database = new Database(@"C:\test.msi", DatabaseOpenMode.Direct))
            {
            }
        }
    }
}

这为您提供了通过SQL查询对数据库执行任何操作的起点。

答案 1 :(得分:1)

虽然msidb.exe等工具能够导出和导入text archive files,但文本存档文件只能用于以下特定用途。

  • 文本存档文件可与版本控制系统一起使用。
  • 删除浪费的存储空间并减小.msi的最终大小 文件。
  • 将本地化信息添加到安装数据库。
  • 确定数据库的代码页。
  • 设置数据库的代码页。
  • 增加数据库列的限制。作者无法改变 列数据类型,可空性或任何本地化属性 标准表中的列。

Windows Installer数据库的文本存档文件带有.idt文件扩展名,位于Archive File Format

您应该使用Windows Installer表编辑工具(如Orca或第三方工具)来创建和修改安装包。