在没有烛光的情况下动态创建WIX MSI

时间:2012-05-20 17:57:48

标签: wix windows-installer wix3.5

如果我想动态创建MSI安装程序,有没有办法在不包含诸如candle.exe和light.exe之类的wix sdk应用程序的情况下执行此操作?如果我的应用程序是用C#编写的,我可以引用Microsoft.Deployment.WindowsInstaller.Package.dll或其他一些wix dll,并创建一个新的MSI文件吗?

我基本上想要使用控制台应用程序动态创建一个msi文件,而不必引用wix控制台应用程序。

2 个答案:

答案 0 :(得分:1)

  

如果我的应用程序是用C#编写的,我可以引用Microsoft.Deployment.WindowsInstaller.Package.dll或其他一些wix dll,并创建一个新的MSI文件吗?

是。那些Microsoft.Deployment。* DLL被称为“部署工具基础”,它们记录在中的 dtf.chm dtfapi.chm 文件中wix安装的doc 文件夹。

从头开始创建一个新的MSI将如下所示:

string path = "path/to/myinstaller.msi";
using (var db = new Database(path, DatabaseOpenMode.Create))
{
    // lots of SQL queries to put stuff in the database here
}

或者,您可以复制现有模板MSI文件,然后使用SQL查询对其进行修改。

您还需要打包二进制文件并将其添加到数据库中。您可以通过使用InstallPackage类打开msi来完成此操作。

在任何情况下,以这种方式创建安装程序都需要详细了解Windows Installer Database Tables

答案 1 :(得分:0)

您可以这样做:您可以直接使用WiX API(受WiX强加的许可条款)以及Windows Installer API