如何关闭python msilib打开的msi db?

时间:2014-01-10 12:58:43

标签: python

当我使用msi编辑msilib文件,然后将msi文件移动到另一个目录时,移动命令失败,因为msi文件仍然打开。我还没有找到任何关闭msilib.OpenDatabase(msifile, MSIDBOPEN_TRANSACT)打开的msi db的方法。有人可以给我一些帮助吗?

1 个答案:

答案 0 :(得分:0)

如果数据库被分配给函数内的局部变量,那么它将在函数返回后关闭:

import msilib

def edit_msi(filepath):
    # global db
    db = msilib.OpenDatabase(filepath, msilib.MSIDBOPEN_TRANSACT)
    # operations on db
    # ...
    # end of edit_msi()

edit_msi(f)
edit_msi(f) # uncomment 'global db' and this will fail