【问题标题】:Insert into RemoveFile table in MSI插入到 MSI 中的 RemoveFile 表中
【发布时间】:2014-07-14 17:18:31
【问题描述】:

为了在 MSI 中自动执行某些操作,我一直在尝试使用 JScript 插入 RemoveFile 表并不断收到错误,由于没有太多错误描述,我无法找出查询中的问题以及唯一的错误当我尝试使用 csript 进行调试时,我得到的是 -2147467259 OpenView,SQL,

这是我用来插入 removefile 表的查询,谁能帮我解决这个问题。

"INSERT INTO `RemoveFile` (`FileKey`, `Component_`, `FileName`, `DirProperty`, `InstallMode`) VALUES (`_142D31F52C744D6FB945F01BA06EEFB3`, `C__931358B017AE83C769F5CB9E95BD2401`, `Product version 2.0.lnk`, `DesktopFolder`, 1)

【问题讨论】:

  • 您何时尝试执行此操作 - 在运行时以自定义操作或仅针对现有 MSI 文件?如果有帮助,您的语句末尾缺少一个 "... 您是否尝试过使用随 SDK 获得的 wirunsql.vbs 工具执行该语句?
  • 您好斯蒂芬,感谢您的回复。很抱歉最后缺少 " 这是一个错字,但这不是问题。真正的问题是在 VALUES 部分中我必须使用 '' 而不是 `` 这会破坏查询。

标签: file insert windows-installer


【解决方案1】:

您是否打开了安装程序数据库的视图?

var installer = WScript.CreateObject("WindowsInstaller.Installer");
var database = installer.OpenDatabase(<your-product.msi>,
                                      msiOpenDatabaseModeTransact);

sql = "INSERT INTO `RemoveFile` "
          + "(`FileKey`, `Component_`, `FileName`, "
              + "`DirProperty`, `InstallMode`) "
          + "VALUES ('_142D31F52C744D6FB945F01BA06EEFB3', "
                   + "'C__931358B017AE83C769F5CB9E95BD2401', "
                   + "'Product version 2.0.lnk', 'DesktopFolder', 1)";
view = database.OpenView(sql);
view.Execute();
view.Close();

【讨论】:

  • 我编辑了这个答案以正确使用单引号来引用值而不是重音引号,后者仅用于引用列名和表名。
猜你喜欢
  • 2012-03-04
  • 2016-02-17
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多