VBoxCommon.cpp revision 18470279db8a9fdd714617adbe1aa8b63cc80aee
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync/* $Id: */
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync/** @file
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync* VBoxCommon - Misc helper routines for install helper.
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync*/
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync/*
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync * Copyright (C) 2006-2010 Oracle Corporation
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync *
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync * available from http://www.virtualbox.org. This file is free software;
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync * you can redistribute it and/or modify it under the terms of the GNU
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync * General Public License (GPL) as published by the Free Software
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync */
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync#include <windows.h>
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync#include <tchar.h>
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync#include <stdio.h>
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync#include <msi.h>
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync#include <msiquery.h>
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsyncUINT VBoxGetProperty(MSIHANDLE a_hModule, TCHAR* a_pszName, TCHAR* a_pValue, DWORD a_dwSize)
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync{
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync UINT uiRet = ERROR_SUCCESS;
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync DWORD dwBuffer = 0;
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync uiRet = MsiGetProperty(a_hModule, a_pszName, TEXT(""), &dwBuffer);
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync if (ERROR_MORE_DATA == uiRet)
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync {
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync ++dwBuffer; /* On output does not include terminating null, so add 1. */
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync if (dwBuffer > a_dwSize)
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync return ERROR_MORE_DATA;
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync ZeroMemory(a_pValue, a_dwSize);
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync uiRet = MsiGetProperty(a_hModule, a_pszName, a_pValue, &dwBuffer);
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync }
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync return uiRet;
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync}
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsyncUINT VBoxSetProperty(MSIHANDLE a_hModule, TCHAR* a_pszName, TCHAR* a_pValue)
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync{
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync return MsiSetProperty(a_hModule, a_pszName, a_pValue);
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync}
18470279db8a9fdd714617adbe1aa8b63cc80aeevboxsync