从c#插入msi数据库>> [

问题描述 投票:2回答:3
我正在尝试将新属性插入msi文件。我可以使用以下代码更新msi数据库文件。是否可以将新值添加到表中。我找不到任何东西。

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WindowsInstaller; namespace msiExample { [System.Runtime.InteropServices.ComImport(), System.Runtime.InteropServices.Guid("000C1090-0000-0000-C000-000000000046")] class Installer { } class msiMain { static void Main(string[] args) { WindowsInstaller.Installer ins = (WindowsInstaller.Installer)new Installer(); string strFileMsi = @"C:\APP.msi"; System.Console.WriteLine("STARTING SECOND QUERY"); Database db2 = ins.OpenDatabase(strFileMsi, WindowsInstaller.MsiOpenDatabaseMode.msiOpenDatabaseModeDirect); View vw2 = db2.OpenView(@"Select * FROM Property where Value='Unknown'"); vw2.Execute(null); Record rcrd2 = vw2.Fetch(); while (rcrd2 != null) { System.Console.WriteLine(rcrd2.get_StringData(1)); rcrd2.set_StringData(1,"No data"); vw2.Modify(WindowsInstaller.MsiViewModify.msiViewModifyUpdate, rcrd2); rcrd2 = vw2.Fetch(); } db2.Commit(); vw2.Close(); System.Console.WriteLine("completed"); } } }

我正在尝试将新属性插入msi文件。我可以使用以下代码更新msi数据库文件。是否可以将新值添加到表中。我找不到任何东西。 ...
c# windows-installer
3个回答
4
投票
Windows Installer XML(WiX)部署工具基础(DTF)库在这里有很大帮助。我知道的最简单方法是:

2
投票
克里斯托弗·画家(Christopher Painter)的DTF答案更好,但根据您的代码,使用com objet:]

WindowsInstaller.View vw2 = db2.OpenView("INSERT INTO Property (Property, Value) VALUES ('property_name', 'property_value')"); vw2.Execute(null); db2.Commit(); vw2.Closed();


0
投票
使用

`

© www.soinside.com 2019 - 2024. All rights reserved.