diff --git a/dlls/msi/files.c b/dlls/msi/files.c index 382a0af38b..50b0aaab77 100644 --- a/dlls/msi/files.c +++ b/dlls/msi/files.c @@ -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"); diff --git a/dlls/msi/source.c b/dlls/msi/source.c index b1db1b27a2..9506bc85b8 100644 --- a/dlls/msi/source.c +++ b/dlls/msi/source.c @@ -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; } diff --git a/include/msi.h b/include/msi.h index dc4aa91a35..1d19f6c126 100644 --- a/include/msi.h +++ b/include/msi.h @@ -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)