Add the string constants located in msi.h and make use of them in

files.c and source.c.
This commit is contained in:
Aric Stewart 2005-07-11 13:22:24 +00:00 committed by Alexandre Julliard
parent 18116dec24
commit c6f155a5fd
3 changed files with 244 additions and 52 deletions

View file

@ -55,8 +55,6 @@ extern const WCHAR szRemoveDuplicateFiles[];
extern const WCHAR szRemoveFiles[];
static const WCHAR cszTempFolder[]= {'T','e','m','p','F','o','l','d','e','r',0};
static const WCHAR INSTALLPROPERTY_LASTUSEDSOURCE[] = {'L','a','s','t','U','s','e','d','S','o','u','r','c','e',0};
static const WCHAR INSTALLPROPERTY_PACKAGENAME[] = {'P','a','c','k','a','g','e','N','a','m','e',0};
inline static UINT create_component_directory ( MSIPACKAGE* package, INT component)
{
@ -508,12 +506,12 @@ static UINT ready_media_for_file(MSIPACKAGE *package, int fileindex,
MsiSourceListSetInfoW(package->ProductCode, NULL,
MSIINSTALLCONTEXT_USERMANAGED,
MSICODE_PRODUCT|MSISOURCETYPE_MEDIA,
INSTALLPROPERTY_LASTUSEDSOURCE, last_path);
INSTALLPROPERTY_LASTUSEDSOURCEstringW, last_path);
else
MsiSourceListSetInfoW(package->ProductCode, NULL,
MSIINSTALLCONTEXT_USERMANAGED,
MSICODE_PRODUCT|MSISOURCETYPE_NETWORK,
INSTALLPROPERTY_LASTUSEDSOURCE, last_path);
INSTALLPROPERTY_LASTUSEDSOURCEstringW, last_path);
msiobj_release(&row->hdr);
return rc;
}
@ -541,7 +539,7 @@ static UINT ready_media_for_file(MSIPACKAGE *package, int fileindex,
MsiSourceListSetInfoW(package->ProductCode, NULL,
MSIINSTALLCONTEXT_USERMANAGED,
MSICODE_PRODUCT|MSISOURCETYPE_NETWORK,
INSTALLPROPERTY_LASTUSEDSOURCE, path);
INSTALLPROPERTY_LASTUSEDSOURCEstringW, path);
HeapFree(GetProcessHeap(),0,path);
}
@ -565,12 +563,12 @@ static UINT ready_media_for_file(MSIPACKAGE *package, int fileindex,
MsiSourceListSetInfoW(package->ProductCode, NULL,
MSIINSTALLCONTEXT_USERMANAGED,
MSICODE_PRODUCT|MSISOURCETYPE_MEDIA,
INSTALLPROPERTY_LASTUSEDSOURCE, last_path);
INSTALLPROPERTY_LASTUSEDSOURCEstringW, last_path);
else
MsiSourceListSetInfoW(package->ProductCode, NULL,
MSIINSTALLCONTEXT_USERMANAGED,
MSICODE_PRODUCT|MSISOURCETYPE_NETWORK,
INSTALLPROPERTY_LASTUSEDSOURCE, last_path);
INSTALLPROPERTY_LASTUSEDSOURCEstringW, last_path);
/* extract the cab file into a folder in the temp folder */
sz = MAX_PATH;
@ -596,12 +594,12 @@ static UINT ready_media_for_file(MSIPACKAGE *package, int fileindex,
MsiSourceListSetInfoW(package->ProductCode, NULL,
MSIINSTALLCONTEXT_USERMANAGED,
MSICODE_PRODUCT|MSISOURCETYPE_MEDIA,
INSTALLPROPERTY_LASTUSEDSOURCE, last_path);
INSTALLPROPERTY_LASTUSEDSOURCEstringW, last_path);
else
MsiSourceListSetInfoW(package->ProductCode, NULL,
MSIINSTALLCONTEXT_USERMANAGED,
MSICODE_PRODUCT|MSISOURCETYPE_NETWORK,
INSTALLPROPERTY_LASTUSEDSOURCE, last_path);
INSTALLPROPERTY_LASTUSEDSOURCEstringW, last_path);
}
set_file_source(package, file, comp, last_path);
@ -666,7 +664,7 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
MsiSourceListSetInfoW(package->ProductCode, NULL,
MSIINSTALLCONTEXT_USERMANAGED,
MSICODE_PRODUCT,
INSTALLPROPERTY_PACKAGENAME, ptr);
INSTALLPROPERTY_PACKAGENAMEstringW, ptr);
}
FIXME("Write DiskPrompt\n");

View file

@ -44,13 +44,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msi);
* These apis are defined in MSI 3.0
*/
static const WCHAR INSTALLPROPERTY_MEDIAPACKAGEPATH[] = {'M','e','d','i','a','P','a','c','k','a','g','e','P','a','t','h',0};
static const WCHAR INSTALLPROPERTY_DISKPROMPT[] = {'D','i','s','k','P','r','o','m','p','t',0};
static const WCHAR INSTALLPROPERTY_LASTUSEDSOURCE[] = {'L','a','s','t','U','s','e','d','S','o','u','r','c','e',0};
static const WCHAR INSTALLPROPERTY_LASTUSEDTYPE[] = {'L','a','s','t','U','s','e','d','T','y','p','e',0};
static const WCHAR INSTALLPROPERTY_PACKAGENAME[] = {'P','a','c','k','a','g','e','N','a','m','e',0};
typedef struct tagMediaInfo
{
LPWSTR path;
@ -194,43 +187,43 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
if (rc != ERROR_SUCCESS)
return ERROR_UNKNOWN_PRODUCT;
if (strcmpW(szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATH) == 0)
if (strcmpW(szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHstringW) == 0)
{
HKEY key;
rc = OpenMediaSubkey(sourcekey, &key, FALSE);
if (rc == ERROR_SUCCESS)
rc = RegQueryValueExW(key, INSTALLPROPERTY_MEDIAPACKAGEPATH, 0, 0,
rc = RegQueryValueExW(key, INSTALLPROPERTY_MEDIAPACKAGEPATHstringW,
0, 0, (LPBYTE)szValue, pcchValue);
if (rc != ERROR_SUCCESS && rc != ERROR_MORE_DATA)
rc = ERROR_UNKNOWN_PROPERTY;
RegCloseKey(key);
}
else if (strcmpW(szProperty, INSTALLPROPERTY_DISKPROMPTstringW) ==0)
{
HKEY key;
rc = OpenMediaSubkey(sourcekey, &key, FALSE);
if (rc == ERROR_SUCCESS)
rc = RegQueryValueExW(key, INSTALLPROPERTY_DISKPROMPTstringW, 0, 0,
(LPBYTE)szValue, pcchValue);
if (rc != ERROR_SUCCESS && rc != ERROR_MORE_DATA)
rc = ERROR_UNKNOWN_PROPERTY;
RegCloseKey(key);
}
else if (strcmpW(szProperty, INSTALLPROPERTY_DISKPROMPT) ==0)
{
HKEY key;
rc = OpenMediaSubkey(sourcekey, &key, FALSE);
if (rc == ERROR_SUCCESS)
rc = RegQueryValueExW(key, INSTALLPROPERTY_DISKPROMPT, 0, 0,
(LPBYTE)szValue, pcchValue);
if (rc != ERROR_SUCCESS && rc != ERROR_MORE_DATA)
rc = ERROR_UNKNOWN_PROPERTY;
RegCloseKey(key);
}
else if (strcmpW(szProperty, INSTALLPROPERTY_LASTUSEDSOURCE)==0)
else if (strcmpW(szProperty, INSTALLPROPERTY_LASTUSEDSOURCEstringW)==0)
{
LPWSTR buffer;
DWORD size = 0;
RegQueryValueExW(sourcekey, INSTALLPROPERTY_LASTUSEDSOURCE, 0, 0, NULL,
&size);
RegQueryValueExW(sourcekey, INSTALLPROPERTY_LASTUSEDSOURCEstringW, 0, 0,
NULL, &size);
if (size == 0)
rc = ERROR_UNKNOWN_PROPERTY;
else
{
LPWSTR ptr;
buffer = HeapAlloc(GetProcessHeap(),0,size);
rc = RegQueryValueExW(sourcekey, INSTALLPROPERTY_LASTUSEDSOURCE, 0,
0, (LPBYTE)buffer,&size);
rc = RegQueryValueExW(sourcekey, INSTALLPROPERTY_LASTUSEDSOURCEstringW,
0, 0, (LPBYTE)buffer,&size);
ptr = strchrW(buffer,';');
ptr = strchrW(ptr,';');
if (!ptr)
@ -250,20 +243,20 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
HeapFree(GetProcessHeap(),0,buffer);
}
}
else if (strcmpW(INSTALLPROPERTY_LASTUSEDTYPE, szProperty)==0)
else if (strcmpW(INSTALLPROPERTY_LASTUSEDTYPEstringW, szProperty)==0)
{
LPWSTR buffer;
DWORD size = 0;
RegQueryValueExW(sourcekey, INSTALLPROPERTY_LASTUSEDSOURCE, 0, 0, NULL,
&size);
RegQueryValueExW(sourcekey, INSTALLPROPERTY_LASTUSEDSOURCEstringW, 0, 0,
NULL, &size);
if (size == 0)
rc = ERROR_UNKNOWN_PROPERTY;
else
{
buffer = HeapAlloc(GetProcessHeap(),0,size);
rc = RegQueryValueExW(sourcekey, INSTALLPROPERTY_LASTUSEDSOURCE, 0,
0, (LPBYTE)buffer,&size);
rc = RegQueryValueExW(sourcekey, INSTALLPROPERTY_LASTUSEDSOURCEstringW,
0, 0, (LPBYTE)buffer,&size);
if (*pcchValue < 1)
{
rc = ERROR_MORE_DATA;
@ -277,9 +270,9 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
HeapFree(GetProcessHeap(),0,buffer);
}
}
else if (strcmpW(INSTALLPROPERTY_PACKAGENAME, szProperty)==0)
else if (strcmpW(INSTALLPROPERTY_PACKAGENAMEstringW, szProperty)==0)
{
rc = RegQueryValueExW(sourcekey, INSTALLPROPERTY_PACKAGENAME, 0, 0,
rc = RegQueryValueExW(sourcekey, INSTALLPROPERTY_PACKAGENAMEstringW, 0, 0,
(LPBYTE)szValue, pcchValue);
if (rc != ERROR_SUCCESS && rc != ERROR_MORE_DATA)
rc = ERROR_UNKNOWN_PROPERTY;
@ -331,31 +324,31 @@ UINT WINAPI MsiSourceListSetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
return ERROR_UNKNOWN_PRODUCT;
if (strcmpW(szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATH) == 0)
if (strcmpW(szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHstringW) == 0)
{
HKEY key;
DWORD size = lstrlenW(szValue)*sizeof(WCHAR);
rc = OpenMediaSubkey(sourcekey, &key, FALSE);
if (rc == ERROR_SUCCESS)
rc = RegSetValueExW(key, INSTALLPROPERTY_MEDIAPACKAGEPATH, 0,
rc = RegSetValueExW(key, INSTALLPROPERTY_MEDIAPACKAGEPATHstringW, 0,
REG_SZ, (LPBYTE)szValue, size);
if (rc != ERROR_SUCCESS)
rc = ERROR_UNKNOWN_PROPERTY;
RegCloseKey(key);
}
else if (strcmpW(szProperty, INSTALLPROPERTY_DISKPROMPT) ==0)
else if (strcmpW(szProperty, INSTALLPROPERTY_DISKPROMPTstringW) == 0)
{
HKEY key;
DWORD size = lstrlenW(szValue)*sizeof(WCHAR);
rc = OpenMediaSubkey(sourcekey, &key, FALSE);
if (rc == ERROR_SUCCESS)
rc = RegSetValueExW(key, INSTALLPROPERTY_DISKPROMPT, 0, REG_SZ,
(LPBYTE)szValue, size);
rc = RegSetValueExW(key, INSTALLPROPERTY_DISKPROMPTstringW, 0,
REG_SZ, (LPBYTE)szValue, size);
if (rc != ERROR_SUCCESS)
rc = ERROR_UNKNOWN_PROPERTY;
RegCloseKey(key);
}
else if (strcmpW(szProperty, INSTALLPROPERTY_LASTUSEDSOURCE)==0)
else if (strcmpW(szProperty, INSTALLPROPERTY_LASTUSEDSOURCEstringW)==0)
{
LPWSTR buffer = NULL;
DWORD size;
@ -378,17 +371,17 @@ UINT WINAPI MsiSourceListSetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
size = (lstrlenW(szValue)+5)*sizeof(WCHAR);
buffer = HeapAlloc(GetProcessHeap(),0,size);
sprintfW(buffer, LastUsedSource_Fmt, typechar, 1, szValue);
rc = RegSetValueExW(sourcekey, INSTALLPROPERTY_LASTUSEDSOURCE, 0,
rc = RegSetValueExW(sourcekey, INSTALLPROPERTY_LASTUSEDSOURCEstringW, 0,
REG_EXPAND_SZ, (LPBYTE)buffer, size);
if (rc != ERROR_SUCCESS)
rc = ERROR_UNKNOWN_PROPERTY;
HeapFree( GetProcessHeap(), 0, buffer );
}
else if (strcmpW(INSTALLPROPERTY_PACKAGENAME, szProperty)==0)
else if (strcmpW(INSTALLPROPERTY_PACKAGENAMEstringW, szProperty)==0)
{
DWORD size = lstrlenW(szValue)*sizeof(WCHAR);
rc = RegSetValueExW(sourcekey, INSTALLPROPERTY_PACKAGENAME, 0, REG_SZ,
(LPBYTE)szValue, size);
rc = RegSetValueExW(sourcekey, INSTALLPROPERTY_PACKAGENAMEstringW, 0,
REG_SZ, (LPBYTE)szValue, size);
if (rc != ERROR_SUCCESS)
rc = ERROR_UNKNOWN_PROPERTY;
}

View file

@ -175,6 +175,202 @@ typedef enum tagMSICODE
#define MAX_FEATURE_CHARS 38
/* Strings defined in msi.h */
/* Advertised Information */
static const WCHAR INSTALLPROPERTY_PACKAGENAMEstringW[] = {'P','a','c','k','a','g','e','N','a','m','e',0};
#define INSTALLPROPERTY_PACKAGENAMEA "PackageName"
#define INSTALLPROPERTY_PACKAGENAMEW WINELIB_NAME_AW(INSTALLPROPERTY_PACKAGENAMEstring)
#define INSTALLPROPERTY_PACKAGENAME WINELIB_NAME_AW(INSTALLPROPERTY_PACKAGENAME)
static const WCHAR INSTALLPROPERTY_TRANSFORMSstringW[] = {'T','r','a','n','s','f','o','r','m','s',0};
#define INSTALLPROPERTY_TRANSFORMSA "Transforms"
#define INSTALLPROPERTY_TRANSFORMSW WINELIB_NAME_AW(INSTALLPROPERTY_TRANSFORMSstring)
#define INSTALLPROPERTY_TRANSFORMS WINELIB_NAME_AW(INSTALLPROPERTY_TRANSFORMS)
static const WCHAR INSTALLPROPERTY_LANGUAGEstringW[] = {'L','a','n','g','u','a','g','e',0};
#define INSTALLPROPERTY_LANGUAGEA "Language"
#define INSTALLPROPERTY_LANGUAGEW WINELIB_NAME_AW(INSTALLPROPERTY_LANGUAGEstring)
#define INSTALLPROPERTY_LANGUAGE WINELIB_NAME_AW(INSTALLPROPERTY_LANGUAGE)
static const WCHAR INSTALLPROPERTY_PRODUCTNAMEstringW[] = {'P','r','o','d','u','c','t','N','a','m','e',0};
#define INSTALLPROPERTY_PRODUCTNAMEA "ProductName"
#define INSTALLPROPERTY_PRODUCTNAMEW WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTNAMEstring)
#define INSTALLPROPERTY_PRODUCTNAME WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTNAME)
static const WCHAR INSTALLPROPERTY_ASSIGNMENTTYPEstringW[] = {'A','s','s','i','g','n','m','e','n','t','T','y','p','e',0};
#define INSTALLPROPERTY_ASSIGNMENTTYPEA "AssignmentType"
#define INSTALLPROPERTY_ASSIGNMENTTYPEW WINELIB_NAME_AW(INSTALLPROPERTY_ASSIGNMENTTYPEstring)
#define INSTALLPROPERTY_ASSIGNMENTTYPE WINELIB_NAME_AW(INSTALLPROPERTY_ASSIGNMENTTYPE)
static const WCHAR INSTALLPROPERTY_PACKAGECODEstringW[] = {'P','a','c','k','a','g','e','C','o','d','e',0};
#define INSTALLPROPERTY_PACKAGECODEA "PackageCode"
#define INSTALLPROPERTY_PACKAGECODEW WINELIB_NAME_AW(INSTALLPROPERTY_PACKAGECODEstring)
#define INSTALLPROPERTY_PACKAGECODE WINELIB_NAME_AW(INSTALLPROPERTY_PACKAGECODE)
static const WCHAR INSTALLPROPERTY_VERSIONstringW[]= {'V','e','r','s','i','o','n',0};
#define INSTALLPROPERTY_VERSIONA "Version"
#define INSTALLPROPERTY_VERSIONW WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONstring)
#define INSTALLPROPERTY_VERSION WINELIB_NAME_AW(INSTALLPROPERTY_VERSION)
/* MSI version 1.1 and above */
static const WCHAR INSTALLPROPERTY_PRODUCTICONstringW[] = {'P','r','o','d','u','c','t','I','c','o','n',0};
#define INSTALLPROPERTY_PRODUCTICONA "ProductIcon"
#define INSTALLPROPERTY_PRODUCTICONW WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTICONstring)
#define INSTALLPROPERTY_PRODUCTICON WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTICON)
/* MSI version 1.5 and above */
static const WCHAR INSTALLPROPERTY_INSTANCETYPEstringW[] = {'I','n','s','t','a','n','c','e','T','y','p','e',0};
#define INSTALLPROPERTY_INSTANCETYPEA "InstanceType"
#define INSTALLPROPERTY_INSTANCETYPEW WINELIB_NAME_AW(INSTALLPROPERTY_INSTANCETYPEstring)
#define INSTALLPROPERTY_INSTANCETYPE WINELIB_NAME_AW(INSTALLPROPERTY_INSTANCETYPE)
/* MSI version 3 and above */
static const WCHAR INSTALLPROPERTY_AUTHORIZED_LUA_APPstringW[] = {'A','u','t','h','o','r','i','z','e','d','L','U','A','A','p','p',0};
#define INSTALLPROPERTY_AUTHORIZED_LUA_APPA "AuthorizedLUAApp"
#define INSTALLPROPERTY_AUTHORIZED_LUA_APPW WINELIB_NAME_AW(INSTALLPROPERTY_AUTHORIZED_LUA_APPstring)
#define INSTALLPROPERTY_AUTHORIZED_LUA_APP WINELIB_NAME_AW(INSTALLPROPERTY_AUTHORIZED_LUA_APP)
/* Installed Information */
static const WCHAR INSTALLPROPERTY_INSTALLEDPRODUCTNAMEstringW[] = {'I','n','s','t','a','l','l','e','d','P','r','o','d','u','c','t','N','a','m','e',0};
#define INSTALLPROPERTY_INSTALLEDPRODUCTNAMEA "InstalledProductName"
#define INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLEDPRODUCTNAMEstring)
#define INSTALLPROPERTY_INSTALLEDPRODUCTNAME WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLEDPRODUCTNAME)
static const WCHAR INSTALLPROPERTY_VERSIONSTRINGstringW[] = {'V','e','r','s','i','o','n','S','t','r','i','n','g',0};
#define INSTALLPROPERTY_VERSIONSTRINGA "VersionString"
#define INSTALLPROPERTY_VERSIONSTRINGW WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONSTRINGstring)
#define INSTALLPROPERTY_VERSIONSTRING WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONSTRING)
static const WCHAR INSTALLPROPERTY_HELPLINKstringW[] = {'H','e','l','p','L','i','n','k',0};
#define INSTALLPROPERTY_HELPLINKA "HelpLink"
#define INSTALLPROPERTY_HELPLINKW WINELIB_NAME_AW(INSTALLPROPERTY_HELPLINKstring)
#define INSTALLPROPERTY_HELPLINK WINELIB_NAME_AW(INSTALLPROPERTY_HELPLINK)
static const WCHAR INSTALLPROPERTY_HELPTELEPHONEstringW[] = {'H','e','l','p','T','e','l','e','p','h','o','n','e',0};
#define INSTALLPROPERTY_HELPTELEPHONEA "HelpTelephone"
#define INSTALLPROPERTY_HELPTELEPHONEW WINELIB_NAME_AW(INSTALLPROPERTY_HELPTELEPHONEstring)
#define INSTALLPROPERTY_HELPTELEPHONE WINELIB_NAME_AW(INSTALLPROPERTY_HELPTELEPHONE)
static const WCHAR INSTALLPROPERTY_INSTALLLOCATIONstringW[] = {'I','n','s','t','a','l','l','L','o','c','a','t','i','o','n',0};
#define INSTALLPROPERTY_INSTALLLOCATIONA "InstallLocation"
#define INSTALLPROPERTY_INSTALLLOCATIONW WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLLOCATIONstring)
#define INSTALLPROPERTY_INSTALLLOCATION WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLLOCATION)
static const WCHAR INSTALLPROPERTY_INSTALLSOURCEstringW[] = {'I','n','s','t','a','l','l','S','o','u','r','c','e',0};
#define INSTALLPROPERTY_INSTALLSOURCEA "InstallSource"
#define INSTALLPROPERTY_INSTALLSOURCEW WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLSOURCEstring)
#define INSTALLPROPERTY_INSTALLSOURCE WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLSOURCE)
static const WCHAR INSTALLPROPERTY_INSTALLDATEstringW[] = {'I','n','s','t','a','l','l','D','a','t','e',0};
#define INSTALLPROPERTY_INSTALLDATEA "InstallDate"
#define INSTALLPROPERTY_INSTALLDATEW WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLDATEstring)
#define INSTALLPROPERTY_INSTALLDATE WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLDATE)
static const WCHAR INSTALLPROPERTY_PUBLISHERstringW[] ={'P','u','b','l','i','s','h','e','r',0};
#define INSTALLPROPERTY_PUBLISHERA "Publisher"
#define INSTALLPROPERTY_PUBLISHERW WINELIB_NAME_AW(INSTALLPROPERTY_PUBLISHERstring)
#define INSTALLPROPERTY_PUBLISHER WINELIB_NAME_AW(INSTALLPROPERTY_PUBLISHER)
static const WCHAR INSTALLPROPERTY_LOCALPACKAGEstringW[] = {'L','o','c','a','l','P','a','c','k','a','g','e',0};
#define INSTALLPROPERTY_LOCALPACKAGEA "LocalPackage"
#define INSTALLPROPERTY_LOCALPACKAGEW WINELIB_NAME_AW(INSTALLPROPERTY_LOCALPACKAGEstring)
#define INSTALLPROPERTY_LOCALPACKAGE WINELIB_NAME_AW(INSTALLPROPERTY_LOCALPACKAGE)
static const WCHAR INSTALLPROPERTY_URLINFOABOUTstringW[] = {'U','R','L','I','n','f','o','A','b','o','u','t',0};
#define INSTALLPROPERTY_URLINFOABOUTA "URLInfoAbout"
#define INSTALLPROPERTY_URLINFOABOUTW WINELIB_NAME_AW(INSTALLPROPERTY_URLINFOABOUTstring)
#define INSTALLPROPERTY_URLINFOABOUT WINELIB_NAME_AW(INSTALLPROPERTY_URLINFOABOUT)
static const WCHAR INSTALLPROPERTY_URLUPDATEINFOstringW[] = {'U','R','L','U','p','d','a','t','e','I','n','f','o',0};
#define INSTALLPROPERTY_URLUPDATEINFOA "URLUpdateInfo"
#define INSTALLPROPERTY_URLUPDATEINFOW WINELIB_NAME_AW(INSTALLPROPERTY_URLUPDATEINFOstring)
#define INSTALLPROPERTY_URLUPDATEINFO WINELIB_NAME_AW(INSTALLPROPERTY_URLUPDATEINFO)
static const WCHAR INSTALLPROPERTY_VERSIONMINORstringW[] = {'V','e','r','s','i','o','n','M','i','n','o','r',0};
#define INSTALLPROPERTY_VERSIONMINORA "VersionMinor"
#define INSTALLPROPERTY_VERSIONMINORW WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONMINORstring)
#define INSTALLPROPERTY_VERSIONMINOR WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONMINOR)
static const WCHAR INSTALLPROPERTY_VERSIONMAJORstringW[] = {'V','e','r','s','i','o','n','M','a','j','o','r',0};
#define INSTALLPROPERTY_VERSIONMAJORA "VersionMajor"
#define INSTALLPROPERTY_VERSIONMAJORW WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONMAJORstring)
#define INSTALLPROPERTY_VERSIONMAJOR WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONMAJOR)
static const WCHAR INSTALLPROPERTY_PRODUCTIDstringW[] = {'P','r','o','d','u','c','t','I','D',0};
#define INSTALLPROPERTY_PRODUCTIDA "ProductID"
#define INSTALLPROPERTY_PRODUCTIDW WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTIDstring)
#define INSTALLPROPERTY_PRODUCTID WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTID)
static const WCHAR INSTALLPROPERTY_REGCOMPANYstringW[] = {'R','e','g','C','o','m','p','a','n','y',0};
#define INSTALLPROPERTY_REGCOMPANYA "RegCompany"
#define INSTALLPROPERTY_REGCOMPANYW WINELIB_NAME_AW(INSTALLPROPERTY_REGCOMPANYstring)
#define INSTALLPROPERTY_REGCOMPANY WINELIB_NAME_AW(INSTALLPROPERTY_REGCOMPANY)
static const WCHAR INSTALLPROPERTY_REGOWNERstringW[] = {'R','e','g','O','w','n','e','r',0};
#define INSTALLPROPERTY_REGOWNERA "RegOwner"
#define INSTALLPROPERTY_REGOWNERW WINELIB_NAME_AW(INSTALLPROPERTY_REGOWNERstring)
#define INSTALLPROPERTY_REGOWNER WINELIB_NAME_AW(INSTALLPROPERTY_REGOWNER)
/* MSI Version 3.0 and greater */
static const WCHAR INSTALLPROPERTY_UNINSTALLABLEstringW[] = {'U','n','i','n','s','t','a','l','l','a','b','l','e',0};
#define INSTALLPROPERTY_UNINSTALLABLEA "Uninstallable"
#define INSTALLPROPERTY_UNINSTALLABLEW WINELIB_NAME_AW(INSTALLPROPERTY_UNINSTALLABLEstring)
#define INSTALLPROPERTY_UNINSTALLABLE WINELIB_NAME_AW(INSTALLPROPERTY_UNINSTALLABLE)
static const WCHAR INSTALLPROPERTY_PRODUCTSTATEstringW[] = {'S','t','a','t','e',0};
#define INSTALLPROPERTY_PRODUCTSTATEA "State"
#define INSTALLPROPERTY_PRODUCTSTATEW WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTSTATEstring)
#define INSTALLPROPERTY_PRODUCTSTATE WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTSTATE)
static const WCHAR INSTALLPROPERTY_PATCHSTATEstringW[] ={'S','t','a','t','e',0};
#define INSTALLPROPERTY_PATCHSTATEA "State"
#define INSTALLPROPERTY_PATCHSTATEW WINELIB_NAME_AW(INSTALLPROPERTY_PATCHSTATEstring)
#define INSTALLPROPERTY_PATCHSTATE WINELIB_NAME_AW(INSTALLPROPERTY_PATCHSTATE)
static const WCHAR INSTALLPROPERTY_PATCHTYPEstringW[] = {'P','a','t','c','h','T','y','p','e',0};
#define INSTALLPROPERTY_PATCHTYPEA "PatchType"
#define INSTALLPROPERTY_PATCHTYPEW WINELIB_NAME_AW(INSTALLPROPERTY_PATCHTYPEstring)
#define INSTALLPROPERTY_PATCHTYPE WINELIB_NAME_AW(INSTALLPROPERTY_PATCHTYPE)
static const WCHAR INSTALLPROPERTY_LUAENABLEDstringW[] = {'L','U','A','E','n','a','b','l','e','d',0};
#define INSTALLPROPERTY_LUAENABLEDA "LUAEnabled"
#define INSTALLPROPERTY_LUAENABLEDW WINELIB_NAME_AW(INSTALLPROPERTY_LUAENABLEDstring)
#define INSTALLPROPERTY_LUAENABLED WINELIB_NAME_AW(INSTALLPROPERTY_LUAENABLED)
static const WCHAR INSTALLPROPERTY_DISPLAYNAMEstringW[] = {'D','i','s','p','l','a','y','N','a','m','e',0};
#define INSTALLPROPERTY_DISPLAYNAMEA "DisplayName"
#define INSTALLPROPERTY_DISPLAYNAMEW WINELIB_NAME_AW(INSTALLPROPERTY_DISPLAYNAMEstring)
#define INSTALLPROPERTY_DISPLAYNAME WINELIB_NAME_AW(INSTALLPROPERTY_DISPLAYNAME)
static const WCHAR INSTALLPROPERTY_MOREINFOURLstringW[] = {'M','o','r','e','I','n','f','o','U','R','L',0};
#define INSTALLPROPERTY_MOREINFOURLA "MoreInfoURL"
#define INSTALLPROPERTY_MOREINFOURLW WINELIB_NAME_AW(INSTALLPROPERTY_MOREINFOURLstring)
#define INSTALLPROPERTY_MOREINFOURL WINELIB_NAME_AW(INSTALLPROPERTY_MOREINFOURL)
/* Source List Info */
static const WCHAR INSTALLPROPERTY_LASTUSEDSOURCEstringW[] = {'L','a','s','t','U','s','e','d','S','o','u','r','c','e',0};
#define INSTALLPROPERTY_LASTUSEDSOURCEA "LastUsedSource"
#define INSTALLPROPERTY_LASTUSEDSOURCEW WINELIB_NAME_AW(INSTALLPROPERTY_LASTUSEDSOURCEstring)
#define INSTALLPROPERTY_LASTUSEDSOURCE WINELIB_NAME_AW(INSTALLPROPERTY_LASTUSEDSOURCEW)
static const WCHAR INSTALLPROPERTY_LASTUSEDTYPEstringW[] = {'L','a','s','t','U','s','e','d','T','y','p','e',0};
#define INSTALLPROPERTY_LASTUSEDTYPEA "LastUsedType"
#define INSTALLPROPERTY_LASTUSEDTYPEW WINELIB_NAME_AW(INSTALLPROPERTY_LASTUSEDTYPEstringW)
#define INSTALLPROPERTY_LASTUSEDTYPE WINELIB_NAME_AW(INSTALLPROPERTY_LASTUSEDTYPE)
static const WCHAR INSTALLPROPERTY_MEDIAPACKAGEPATHstringW[] = {'M','e','d','i','a','P','a','c','k','a','g','e','P','a','t','h',0};
#define INSTALLPROPERTY_MEDIAPACKAGEPATHA "MediaPackagePath"
#define INSTALLPROPERTY_MEDIAPACKAGEPATHW WINELIB_NAME_AW(INSTALLPROPERTY_MEDIAPACKAGEPATHstring)
#define INSTALLPROPERTY_MEDIAPACKAGEPATH WINELIB_NAME_AW(INSTALLPROPERTY_MEDIAPACKAGEPATH)
static const WCHAR INSTALLPROPERTY_DISKPROMPTstringW[] = {'D','i','s','k','P','r','o','m','p','t',0};
#define INSTALLPROPERTY_DISKPROMPTA "DiskPrompt"
#define INSTALLPROPERTY_DISKPROMPTW WINELIB_NAME_AW(INSTALLPROPERTY_DISKPROMPTstringW)
#define INSTALLPROPERTY_DISKPROMPT WINELIB_NAME_AW(INSTALLPROPERTY_DISKPROMPT)
typedef INT (CALLBACK *INSTALLUI_HANDLERA)(LPVOID, UINT, LPCSTR);
typedef INT (CALLBACK *INSTALLUI_HANDLERW)(LPVOID, UINT, LPCWSTR);
@ -351,6 +547,11 @@ UINT WINAPI MsiCloseHandle(MSIHANDLE);
UINT WINAPI MsiCloseAllHandles(void);
INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL, HWND*);
UINT WINAPI MsiSourceListGetInfoW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR, LPWSTR, LPDWORD);
UINT WINAPI MsiSourceListSetInfoW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR, LPCWSTR);
UINT WINAPI MsiSourceListAddSourceExW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR, DWORD);
UINT WINAPI MsiSourceListAddMediaDiskW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPCWSTR, LPCWSTR);
UINT WINAPI MsiSourceListGetInfoA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, LPCSTR, LPSTR, LPDWORD);
UINT WINAPI MsiSourceListGetInfoW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR, LPWSTR, LPDWORD);
#define MsiSourceListGetInfo WINELIB_NAME_AW(MsiSourceListGetInfo)