У меня есть следующий XML для конфигурации WIX MSI ..
<?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 к свойству поля в коде, но код не возвращает значение, указанное в XML. Как получить информацию о версии продукта, свойстве InstallVersion и свойствах компании от MSI.
Документы говорят, что ваш последний параметр должен быть размером буфера, в котором будет сохранен результат, а не NULL.