2014-01-10 19 views
2

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

回答

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