does anyone have any ideas on how i could convert this over to masm compatable? another non related question is will iczelions LIB2DEF and MLIB utilities do a good job of creating a lib for me. or will i have to assemble one manually?
typedef enum tagINSTALLOGMODE // bit flags for use with MsiEnableLog and MsiSetExternalUI
{
INSTALLLOGMODE_FATALEXIT = (1 << (INSTALLMESSAGE_FATALEXIT >> 24)),
INSTALLLOGMODE_ERROR = (1 << (INSTALLMESSAGE_ERROR >> 24)),
INSTALLLOGMODE_WARNING = (1 << (INSTALLMESSAGE_WARNING >> 24)),
INSTALLLOGMODE_USER = (1 << (INSTALLMESSAGE_USER >> 24)),
INSTALLLOGMODE_INFO = (1 << (INSTALLMESSAGE_INFO >> 24)),
INSTALLLOGMODE_RESOLVESOURCE = (1 << (INSTALLMESSAGE_RESOLVESOURCE >> 24)),
INSTALLLOGMODE_OUTOFDISKSPACE = (1 << (INSTALLMESSAGE_OUTOFDISKSPACE >> 24)),
INSTALLLOGMODE_ACTIONSTART = (1 << (INSTALLMESSAGE_ACTIONSTART >> 24)),
INSTALLLOGMODE_ACTIONDATA = (1 << (INSTALLMESSAGE_ACTIONDATA >> 24)),
INSTALLLOGMODE_COMMONDATA = (1 << (INSTALLMESSAGE_COMMONDATA >> 24)),
INSTALLLOGMODE_PROPERTYDUMP = (1 << (INSTALLMESSAGE_PROGRESS >> 24)), // log only
INSTALLLOGMODE_VERBOSE = (1 << (INSTALLMESSAGE_INITIALIZE >> 24)), // log only
INSTALLLOGMODE_PROGRESS = (1 << (INSTALLMESSAGE_PROGRESS >> 24)), // external handler only
INSTALLLOGMODE_INITIALIZE = (1 << (INSTALLMESSAGE_INITIALIZE >> 24)), // external handler only
INSTALLLOGMODE_TERMINATE = (1 << (INSTALLMESSAGE_TERMINATE >> 24)), // external handler only
INSTALLLOGMODE_SHOWDIALOG = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 24)), // external handler only
} INSTALLLOGMODE;
typedef enum tagINSTALLLOGATTRIBUTES // flag attributes for MsiEnableLog
{
INSTALLLOGATTRIBUTES_APPEND = (1 << 0),
INSTALLLOGATTRIBUTES_FLUSHEACHLINE = (1 << 1),
} INSTALLLOGATTRIBUTES;
typedef enum tagINSTALLFEATUREATTRIBUTE // bit flags
{
INSTALLFEATUREATTRIBUTE_FAVORLOCAL = 1 << 0,
INSTALLFEATUREATTRIBUTE_FAVORSOURCE = 1 << 1,
INSTALLFEATUREATTRIBUTE_FOLLOWPARENT = 1 << 2,
INSTALLFEATUREATTRIBUTE_FAVORADVERTISE = 1 << 3,
INSTALLFEATUREATTRIBUTE_DISALLOWADVERTISE = 1 << 4,
INSTALLFEATUREATTRIBUTE_NOUNSUPPORTEDADVERTISE = 1 << 5,
} INSTALLFEATUREATTRIBUTE;
// Product info attributes: advertised information
#define INSTALLPROPERTY_TRANSFORMS __TEXT("Transforms")
#define INSTALLPROPERTY_LANGUAGE __TEXT("Language")
#define INSTALLPROPERTY_PRODUCTNAME __TEXT("ProductName")
#define INSTALLPROPERTY_ASSIGNMENTTYPE __TEXT("AssignmentType")
#define INSTALLPROPERTY_PACKAGECODE __TEXT("PackageCode")
#define INSTALLPROPERTY_VERSION __TEXT("Version")
#if (_WIN32_MSI >= 110)
#define INSTALLPROPERTY_PRODUCTICON __TEXT("ProductIcon")
#endif //(_WIN32_MSI >= 110)
// Product info attributes: installed information
#define INSTALLPROPERTY_INSTALLEDPRODUCTNAME __TEXT("InstalledProductName")
#define INSTALLPROPERTY_VERSIONSTRING __TEXT("VersionString")
#define INSTALLPROPERTY_HELPLINK __TEXT("HelpLink")
#define INSTALLPROPERTY_HELPTELEPHONE __TEXT("HelpTelephone")
#define INSTALLPROPERTY_INSTALLLOCATION __TEXT("InstallLocation")
#define INSTALLPROPERTY_INSTALLSOURCE __TEXT("InstallSource")
#define INSTALLPROPERTY_INSTALLDATE __TEXT("InstallDate")
#define INSTALLPROPERTY_PUBLISHER __TEXT("Publisher")
#define INSTALLPROPERTY_LOCALPACKAGE __TEXT("LocalPackage")
#define INSTALLPROPERTY_URLINFOABOUT __TEXT("URLInfoAbout")
#define INSTALLPROPERTY_URLUPDATEINFO __TEXT("URLUpdateInfo")
#define INSTALLPROPERTY_VERSIONMINOR __TEXT("VersionMinor")
#define INSTALLPROPERTY_VERSIONMAJOR __TEXT("VersionMajor")
thanks
smurf
This message was edited by smurf, on 7/5/2001 2:00:01 PMsmurf,
You can convert all "enum" type into any macro assembler EQU directive.
I am giving you samples.
INSTALLLOGMODE_ERROR = (1 << (INSTALLMESSAGE_ERROR >> 24))
will be converted as
INSTALLLOGMODE_ERROR EQU 00000002h
I'll explain how it is. INSTALLMESSAGE_ERROR is defined as 0x01000000L.
Right shift that value by 24 bit. You'll get 1 since the bit 1 is in 25
bit initially. Now left shift that bit by 1 so you get 2.
value 0x01000000L
nibble 7654321 6 nibble = 6 * 4 = 24 bits
So 1 is in 25th bit.
So do that shifting of bits for original values on the right hand side
for rest of the enum in INSTALLLOGMODE.
The same is applied to rest of the enum types.
INSTALLFEATUREATTRIBUTE_FAVORLOCAL = 1 << 0
INSTALLFEATUREATTRIBUTE_FAVORSOURCE = 1 << 1
INSTALLFEATUREATTRIBUTE_FOLLOWPARENT = 1 << 2
INSTALLFEATUREATTRIBUTE_FAVORADVERTISE = 1 << 3
INSTALLFEATUREATTRIBUTE_DISALLOWADVERTISE = 1 << 4
INSTALLFEATUREATTRIBUTE_NOUNSUPPORTEDADVERTISE = 1 << 5
will be converted as
INSTALLFEATUREATTRIBUTE_FAVORLOCAL EQU 1
INSTALLFEATUREATTRIBUTE_FAVORSOURCE EQU 2
INSTALLFEATUREATTRIBUTE_FOLLOWPARENT EQU 4
INSTALLFEATUREATTRIBUTE_FAVORADVERTISE EQU 8
INSTALLFEATUREATTRIBUTE_DISALLOWADVERTISE EQU 16
INSTALLFEATUREATTRIBUTE_NOUNSUPPORTEDADVERTISE EQU 32
Don't forget that shifting left is multipling the number by 2 to the
power of shif value.
As far as this one,
#define INSTALLPROPERTY_TRANSFORMS __TEXT("Transforms")
I will convert this for ANSI into
.data
INSTALLPROPERTY_TRANSFORMS DB "Transforms", 0
For UNICODE either use STRINGTABLE in resource file or use some macro
that can generate the following (I think Ernie has written on macro for
this)
.data
INSTALLPROPERTY_TRANSFORMS DW 'T', 'r', 'a', 'n', 's'
DW 'f', 'o', 'r', 'm', 's', 0
Jones.