VirtualBox

source: vbox/trunk/src/VBox/Installer/win/InstallHelper/VBoxCommon.h@ 108285

Last change on this file since 108285 was 108285, checked in by vboxsync, 4 weeks ago

Host installer/win: Added routines for handling CustomActionData to the common InstallHelper.dll code. Required as a prerequisite for using shared (sessison / system) CustomActionData by the installer, to better support elevated driver installs on modern Windows OSes (>= 10). bugref:10762

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.3 KB
Line 
1/* $Id: VBoxCommon.h 108285 2025-02-19 10:53:35Z vboxsync $ */
2/** @file
3 * VBoxCommon - Misc helper routines for install helper.
4 */
5
6/*
7 * Copyright (C) 2008-2024 Oracle and/or its affiliates.
8 *
9 * This file is part of VirtualBox base platform packages, as
10 * available from https://www.virtualbox.org.
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation, in version 3 of the
15 * License.
16 *
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, see <https://www.gnu.org/licenses>.
24 *
25 * SPDX-License-Identifier: GPL-3.0-only
26 */
27
28#ifndef VBOX_INCLUDED_SRC_InstallHelper_VBoxCommon_h
29#define VBOX_INCLUDED_SRC_InstallHelper_VBoxCommon_h
30#ifndef RT_WITHOUT_PRAGMA_ONCE
31# pragma once
32#endif
33
34#if (_MSC_VER < 1400) /* Provide _stprintf_s to VC < 8.0. */
35int swprintf_s(WCHAR *buffer, size_t cbBuffer, const WCHAR *format, ...);
36#endif
37
38/** Struct for keeping a single "CustomActionData" key=value item. */
39typedef struct VBOXMSICUSTOMACTIONDATAENTRY
40{
41 /** Key (name) of the item. */
42 char *pszKey;
43 /** Value of the item. Always a string but can represent other stuff. Use with care. */
44 char *pszVal;
45} VBOXMSICUSTOMACTIONDATAENTRY;
46/** Pointer to a struct for keeping a single "CustomActionData" key=value item. */
47typedef VBOXMSICUSTOMACTIONDATAENTRY *PVBOXMSICUSTOMACTIONDATAENTRY;
48
49/** Struct for keeping "CustomActionData" entries. */
50typedef struct VBOXMSICUSTOMACTIONDATA
51{
52 /** Array of CustomActionData entries. */
53 PVBOXMSICUSTOMACTIONDATAENTRY paEntries;
54 /** Number of entries in \a paEntries. */
55 size_t cEntries;
56} VBOXMSICUSTOMACTIONDATA;
57/** Pointer to a struct for keeping "CustomActionData" entries. */
58typedef VBOXMSICUSTOMACTIONDATA *PVBOXMSICUSTOMACTIONDATA;
59
60/** Default separator for custom action data key=value pairs. */
61#define VBOX_MSI_CUSTOMACTIONDATA_SEP_STR "##"
62
63void VBoxMsiCustomActionDataFree(PVBOXMSICUSTOMACTIONDATA pData);
64int VBoxMsiCustomActionDataQueryEx(MSIHANDLE hMsi, const char *pszSep, PVBOXMSICUSTOMACTIONDATA *ppData);
65int VBoxMsiCustomActionDataQuery(MSIHANDLE hMsi, PVBOXMSICUSTOMACTIONDATA *ppData);
66const char *VBoxMsiCustomActionDataFind(PVBOXMSICUSTOMACTIONDATA pHaystack, const char *pszNeedle);
67
68int VBoxMsiQueryProp(MSIHANDLE hMsi, const WCHAR *pwszName, WCHAR *pwszVal, DWORD cwVal);
69int VBoxMsiQueryPropEx(MSIHANDLE hMsi, const WCHAR *pwszName, WCHAR *pwszVal, DWORD *pcwVal);
70int VBoxMsiQueryPropUtf8(MSIHANDLE hMsi, const char *pszName, char **ppszValue);
71int VBoxMsiQueryPropInt32(MSIHANDLE hMsi, const char *pszName, DWORD *pdwValue);
72UINT VBoxMsiSetProp(MSIHANDLE hMsi, const WCHAR *pwszName, const WCHAR *pwszValue);
73int VBoxMsiSetPropUtf8(MSIHANDLE hMsi, const char *pszName, const char *pszValue);
74UINT VBoxMsiSetPropDWORD(MSIHANDLE hMsi, const WCHAR *pwszName, DWORD dwVal);
75int VBoxMsiRegQueryDWORDW(MSIHANDLE hMsi, HKEY hKey, LPCWSTR pwszName, DWORD *pdwValue);
76int VBoxMsiRegQueryDWORD(MSIHANDLE hMsi, HKEY hKey, const char *pszName, DWORD *pdwValue);
77
78#endif /* !VBOX_INCLUDED_SRC_InstallHelper_VBoxCommon_h */
79
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette