如果我想动态创建MSI安装程序,有没有办法在不包含诸如candle.exe和light.exe之类的wix sdk应用程序的情况下执行此操作?如果我的应用程序是用C#编写的,我可以引用Microsoft.Deployment.WindowsInstaller.Package.dll或其他一些wix dll,并创建一个新的MSI文件吗?
我基本上想要使用控制台应用程序动态创建一个msi文件,而不必引用wix控制台应用程序。
答案 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。