R
Rajneesh
Hi,
I am writing a tool to perform ICE validation just like ORCA, in C++. I saw
a sample in the "Handling Progress Messages Using MsiSetExternalUI" section
of the MSI help library.
I am doing a MsiSetInternalUI and setting it to NONE, and a MsiSetExternalUI
to point to my callback function that will handle all the MsiProcessMessage
messages that are fired from the various ICE DLLs. I do this by streaming
them out from the binary table and loading them using the LoadLibrary and
GetProcAddress on the ICE function and passing the database handle.
This does not seem to work as I receive only INFO messages and no ICE ERROR
or WARNING messages, even though I have set the correct message filter. The
only way it works is if I set the MsiSetInternalUI to anything other then
NONE. This does fire back all the ERROR AND WARNING messages from the ICE
DLL but it does it twice, once in the installation UI (as a MessageBox) that
is launched as a result of MsiSetInternalUI and one that is received by my
callback handler.
I do not want to launch the installation. I just check the ICE validations
using NO UI. Is there something else I need to do other then setting the
MsiSetInternalUI to NONE to make my callback handler receive the ICE ERROR
and WARNING messages from MsiProcessMessage?
Any help will be deeply appreciated.
Thanks,
Rajneesh...
I am writing a tool to perform ICE validation just like ORCA, in C++. I saw
a sample in the "Handling Progress Messages Using MsiSetExternalUI" section
of the MSI help library.
I am doing a MsiSetInternalUI and setting it to NONE, and a MsiSetExternalUI
to point to my callback function that will handle all the MsiProcessMessage
messages that are fired from the various ICE DLLs. I do this by streaming
them out from the binary table and loading them using the LoadLibrary and
GetProcAddress on the ICE function and passing the database handle.
This does not seem to work as I receive only INFO messages and no ICE ERROR
or WARNING messages, even though I have set the correct message filter. The
only way it works is if I set the MsiSetInternalUI to anything other then
NONE. This does fire back all the ERROR AND WARNING messages from the ICE
DLL but it does it twice, once in the installation UI (as a MessageBox) that
is launched as a result of MsiSetInternalUI and one that is received by my
callback handler.
I do not want to launch the installation. I just check the ICE validations
using NO UI. Is there something else I need to do other then setting the
MsiSetInternalUI to NONE to make my callback handler receive the ICE ERROR
and WARNING messages from MsiProcessMessage?
Any help will be deeply appreciated.
Thanks,
Rajneesh...