我有关于MSI的wix配置的xml。
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UIExtension">
<Product Id="*"
Name="MyProductName"
Language="1033"
Version="1.0.0"
Manufacturer="Stack"
Codepage="1200"
UpgradeCode="242C9452-1B5E-414A-8245-D86B14E8E9CC">
<Package Id="*"
InstallerVersion="405"
Compressed="yes"
InstallScope="perMachine"
Description="MyProduct"
/>
<Property Id="Company" Value="$(var.Company)"/>
</Product>
</Wix>
我正在使用下面的代码(QT C ++)编写代码以获取属性信息
#include <Windows.h>
#include <Msi.h>
#include <MsiQuery.h>
LPCWSTR program = L"C:/installer.msi";
MSIHANDLE hProduct = NULL;
LPWSTR pszVersion = NULL;
LPDWORD dwSizeVersion = NULL;
LPCWSTR property = L"ProductVersion";
MsiOpenPackage( program, &hProduct );
MsiGetProductProperty( hProduct, property, pszVersion, dwSizeVersion );
MsiCloseHandle( hProduct );
qDebug() << "MSI Property version is : " << QString::fromWCharArray(pszVersion);
我已尝试将ProductVersion添加到代码中的field属性,但代码未返回XML中提供的值。如何从MSI获取产品版本,Package InstallVersion和Company属性信息。
答案 0 :(得分:0)
文档说你的最后一个参数应该是存储结果的缓冲区的大小,而不是NULL。