Получить ProductCode MSI с помощью Python [duplicate]

import subprocess
import time
import win32gui

...

def initUI(self):
    # create a process
    exePath = "C:\\Windows\\system32\\calc.exe"
    subprocess.Popen(exePath)
    hwnd = win32gui.FindWindowEx(0, 0, "CalcFrame", "计算器")
    time.sleep(0.05)
    window = QWindow.fromWinId(hwnd)
    self.createWindowContainer(window, self)
    self.setGeometry(500, 500, 450, 400)
    self.setWindowTitle('File dialog')
    self.show()

...
  • 01 создать процесс, запустить exe
  • 02 использовать spy ++ для получения hwnd для exe
  • 03 создать QWindow из hwnd
  • 04 создать контейнер окна

Результат:

потерять exe'menu

[/g0]

2
задан Luiz C. 1 July 2010 в 13:54
поделиться

2 ответа

Попробуйте SummaryInformation.GetProperty(PID_TITLE) и SummaryInformation.GetProperty(PID_REVNUMBER) и все другие имена полей на странице странице msilib docs

2
ответ дан vpit3833 21 August 2018 в 17:46
поделиться
  • 1
    Благодарю. я не понимал, что существует lib, называемый msilib – Luiz C. 1 July 2010 в 15:48

Вы можете получить версию продукта, используя:

from msilib import *

def GetMsiProperty(path ,property):
    db = OpenDatabase(path, MSIDBOPEN_READONLY)
    view = db.OpenView ("SELECT Value FROM Property WHERE Property='" + property + "'")
    view.Execute(None)
    result = view.Fetch()
    #print dir(result)
    return result.GetString(1)


msiVersion = GetMsiProperty(r'C:\path\to.msi' ,"ProductVersion")

Ваша версия python должна быть выше 2.5 для работы вышеприведенной функции.

5
ответ дан Tjaart 21 August 2018 в 17:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: