Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查msi文件中是否存在下一条记录?_C#_Python_Vbscript_Wix_Windows Installer - Fatal编程技术网

C# 如何检查msi文件中是否存在下一条记录?

C# 如何检查msi文件中是否存在下一条记录?,c#,python,vbscript,wix,windows-installer,C#,Python,Vbscript,Wix,Windows Installer,使用MsiViewFetch,我们可以将sql查询中的记录获取到msi。 但是,是否存在任何常量或函数来检查文件表msi中是否存在下一条记录或行/记录数?否。Windows Installer的SQL实现相当有限。所有可用选项都是重复调用,直到返回错误\u无更多\u项为止。一旦您检索了所有记录,它就会这样做。这取决于您在整个过程中跟踪计数,并正确处理所有返回的对象。(例如,每个成功返回的记录都必须使用关闭,在异常情况下,视图本身可能需要使用关闭。) 如前所述,这可能在包装它的不同语言中有不同的表

使用MsiViewFetch,我们可以将sql查询中的记录获取到msi。
但是,是否存在任何常量或函数来检查文件表msi中是否存在下一条记录或行/记录数?

否。Windows Installer的SQL实现相当有限。所有可用选项都是重复调用,直到返回错误\u无更多\u项为止。一旦您检索了所有记录,它就会这样做。这取决于您在整个过程中跟踪计数,并正确处理所有返回的对象。(例如,每个成功返回的记录都必须使用关闭,在异常情况下,视图本身可能需要使用关闭。)

如前所述,这可能在包装它的不同语言中有不同的表达。例如,如果您已经检索了所有记录,Windows Installer自动化界面的方法将返回Nothing
。清理资源通常会被修改为使用相关语言的约定


特别是,Python的msilib是Windows Installer功能的包装器,它的实现是为了支持创建Python自己的安装程序。因为它不打算用于一般用途,所以它缺乏其他包装物的一些生物舒适性。您可以看到,将任何不成功的返回代码转换为MSIError,并且ERROR\u NO\u MORE\u ITEMS不是ERROR\u success。因此,对于您的使用,您必须捕获MSIError并希望它是错误项,或者检查异常字符串中嵌入的103

您标记了这三种不同的语言。你想回答哪一个问题?我试过用python编写下面的代码,但失败了。有些语言,如C#,有第三方库来抽象这个问题。这就是我为什么问语言的原因。这就是我所犯的错误。回溯(最近一次调用):文件“C:/Users/uday-/Documents/GitHub/InstallTesting/utilities/reading msi/MSIFileRead.py”,第17行,cur_record=view.Fetch()###msi.msi错误:未知错误103,这是我的代码。