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

diff --git a/include/msi.h b/include/msi.h
index dc4aa91..1d19f6c 100644
--- a/include/msi.h
+++ b/include/msi.h
@@ -175,6 +175,202 @@
 
 #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 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)