发现错误信息是:
CustomAction GetSqlStates.2D02443E_7002_4C0B_ABC9_EAB2C064397B returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 16:46:32: GetSqlStates.2D02443E_7002_4C0B_ABC9_EAB2C064397B. Return value 3.
Setup with MSDE Merge Modules May Fail During Initialization (SQLCAX.DLL)
________________________________________
Description:
A setup that includes the MSDE merge modules from the may fail during the initialization phase. When you create a log file of the installation you find an entry similar to this:
Action start 11:52:49: GetSqlStates.2D02443E_7002_4C0B_ABC9_EAB2C064397B.
Loading extended custom action library sqlcax.dll
Error 126 loading library sqlcax.dll
Action ended 11:52:49: GetSqlStates.2D02443E_7002_4C0B_ABC9_EAB2C064397B. Return value 3.
1: Failed to launch action 'GetSqlStates.2D02443E_7002_4C0B_ABC9_EAB2C064397B', error is 1603
Cause:
SQLBASE.MSM includes (among others) the following custom actions: StreamSupportFiles and GetSqlStates. StreamSupportFiles is responsible for unpacking sqlcax.dll from the Binary table to a temp directory where custom action GetSqlStates can load it. If GetSqlStates is called before StreamSupportFiles it will fail with error code 126 "Specified module could not be found".
Custom actions in merge modules are sequenced based on standard actions. StreamSupportFiles is called before LaunchConditions and GetSqlStates is called after AppSearch. If you place AppSearch before LaunchConditions in your main setup (which is completely legal) the MSDE custom actions will be called in the wrong order.
Workarounds:
Move AppSearch after LaunchConditions in your main setup. Or open SQLBASE.MSM in Orca and adjust the ModuleInstallUISequence and ModuleInstalLExecuteSequence so that StreamSupportFiles is called before AppSearch.
Results
I tried both workarrounds with no luck at all . It is a standard project and I have all of the latest updates from installshield.