MSI产品属性信息

时间:2014-07-14 13:07:35

标签: c++ windows wix windows-installer

我有关于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属性信息。

1 个答案:

答案 0 :(得分:0)

文档说你的最后一个参数应该是存储结果的缓冲区的大小,而不是NULL。