msi: Implement the Version property of the Installer object.
This commit is contained in:
parent
6a30e1b0b4
commit
b57a2f93a9
|
@ -30,6 +30,7 @@
|
||||||
#include "msipriv.h"
|
#include "msipriv.h"
|
||||||
#include "activscp.h"
|
#include "activscp.h"
|
||||||
#include "oleauto.h"
|
#include "oleauto.h"
|
||||||
|
#include "shlwapi.h"
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
|
|
||||||
|
@ -1648,6 +1649,26 @@ static HRESULT WINAPI InstallerImpl_Invoke(
|
||||||
else return DISP_E_MEMBERNOTFOUND;
|
else return DISP_E_MEMBERNOTFOUND;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DISPID_INSTALLER_VERSION:
|
||||||
|
if (wFlags & DISPATCH_PROPERTYGET) {
|
||||||
|
DLLVERSIONINFO verinfo;
|
||||||
|
WCHAR version[MAX_PATH];
|
||||||
|
|
||||||
|
static const WCHAR format[] = {'%','d','.','%','d','.','%','d','.','%','d',0};
|
||||||
|
|
||||||
|
verinfo.cbSize = sizeof(DLLVERSIONINFO);
|
||||||
|
hr = DllGetVersion(&verinfo);
|
||||||
|
if (FAILED(hr)) return hr;
|
||||||
|
|
||||||
|
sprintfW(version, format, verinfo.dwMajorVersion, verinfo.dwMinorVersion,
|
||||||
|
verinfo.dwBuildNumber, verinfo.dwPlatformID);
|
||||||
|
|
||||||
|
V_VT(pVarResult) = VT_BSTR;
|
||||||
|
V_BSTR(pVarResult) = SysAllocString(version);
|
||||||
|
}
|
||||||
|
else return DISP_E_MEMBERNOTFOUND;
|
||||||
|
break;
|
||||||
|
|
||||||
case DISPID_INSTALLER_REGISTRYVALUE:
|
case DISPID_INSTALLER_REGISTRYVALUE:
|
||||||
if (wFlags & DISPATCH_METHOD) {
|
if (wFlags & DISPATCH_METHOD) {
|
||||||
HKEY hkey;
|
HKEY hkey;
|
||||||
|
|
|
@ -145,6 +145,8 @@ library WindowsInstaller
|
||||||
void InstallProduct(
|
void InstallProduct(
|
||||||
[in] BSTR PackagePath,
|
[in] BSTR PackagePath,
|
||||||
[in, optional, defaultvalue("0")] BSTR PropertyValues);
|
[in, optional, defaultvalue("0")] BSTR PropertyValues);
|
||||||
|
[id(DISPID_INSTALLER_VERSION)]
|
||||||
|
BSTR Version();
|
||||||
[id(DISPID_INSTALLER_REGISTRYVALUE), propget]
|
[id(DISPID_INSTALLER_REGISTRYVALUE), propget]
|
||||||
BSTR RegistryValue(
|
BSTR RegistryValue(
|
||||||
[in] VARIANT Root,
|
[in] VARIANT Root,
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#define DISPID_INSTALLER_OPENPACKAGE 2
|
#define DISPID_INSTALLER_OPENPACKAGE 2
|
||||||
#define DISPID_INSTALLER_OPENDATABASE 4
|
#define DISPID_INSTALLER_OPENDATABASE 4
|
||||||
#define DISPID_INSTALLER_INSTALLPRODUCT 8
|
#define DISPID_INSTALLER_INSTALLPRODUCT 8
|
||||||
|
#define DISPID_INSTALLER_VERSION 9
|
||||||
#define DISPID_INSTALLER_REGISTRYVALUE 11
|
#define DISPID_INSTALLER_REGISTRYVALUE 11
|
||||||
#define DISPID_INSTALLER_PRODUCTSTATE 17
|
#define DISPID_INSTALLER_PRODUCTSTATE 17
|
||||||
#define DISPID_INSTALLER_PRODUCTINFO 18
|
#define DISPID_INSTALLER_PRODUCTINFO 18
|
||||||
|
|
|
@ -475,8 +475,8 @@ static void test_dispid(void)
|
||||||
ok( get_dispid( pInstaller, "EnableLog" ) == 7, "dispid wrong\n");
|
ok( get_dispid( pInstaller, "EnableLog" ) == 7, "dispid wrong\n");
|
||||||
}
|
}
|
||||||
ok( get_dispid( pInstaller, "InstallProduct" ) == 8, "dispid wrong\n");
|
ok( get_dispid( pInstaller, "InstallProduct" ) == 8, "dispid wrong\n");
|
||||||
todo_wine {
|
|
||||||
ok( get_dispid( pInstaller, "Version" ) == 9, "dispid wrong\n");
|
ok( get_dispid( pInstaller, "Version" ) == 9, "dispid wrong\n");
|
||||||
|
todo_wine {
|
||||||
ok( get_dispid( pInstaller, "LastErrorRecord" ) == 10, "dispid wrong\n");
|
ok( get_dispid( pInstaller, "LastErrorRecord" ) == 10, "dispid wrong\n");
|
||||||
}
|
}
|
||||||
ok( get_dispid( pInstaller, "RegistryValue" ) == 11, "dispid wrong\n");
|
ok( get_dispid( pInstaller, "RegistryValue" ) == 11, "dispid wrong\n");
|
||||||
|
@ -2379,11 +2379,9 @@ static void test_Installer(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Installer::Version */
|
/* Installer::Version */
|
||||||
todo_wine {
|
memset(szPath, 0, sizeof(szPath));
|
||||||
memset(szPath, 0, sizeof(szPath));
|
hr = Installer_VersionGet(szPath);
|
||||||
hr = Installer_VersionGet(szPath);
|
ok(hr == S_OK, "Installer_VersionGet failed, hresult 0x%08x\n", hr);
|
||||||
ok(hr == S_OK, "Installer_VersionGet failed, hresult 0x%08x\n", hr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Installer::InstallProduct and other tests that depend on our product being installed */
|
/* Installer::InstallProduct and other tests that depend on our product being installed */
|
||||||
test_Installer_InstallProduct();
|
test_Installer_InstallProduct();
|
||||||
|
|
Loading…
Reference in New Issue