PDA

View Full Version : CAs in my merge module not being called



WISeAgent
06-03-2004, 11:38 PM
Greetings,

I have been successfully authored a merge module with custom actions. All CAs are shown in the install log in the right sequence as I expected. In another words, it's working perfectly fine.

Somehow, I don't know what I have done wrong, All my CAs in merge module are not getting called, I can't find any trace of them in the installation log file. It's simply vanished overnight;(

What I've done so far was to copy ism files to a new location, open ism file and exporting to isv file and check them into cvs. I then checked out all the isv files from cvs to my build machine and build it. I can still see all the CA's in CustomAction table and ModuleInstallExecuteSequence Table, but I can't find any trace of them in the installation log. Where could it go wrong?


Any help and advice are much appreciated.


Regards,
W Wang

huntant
06-04-2004, 02:35 PM
Make sure that in your merge module the custom actions are in the ModuleInstallUISequence or ModuleInstallExecuteSequence tables.

This may be way your install is not calling them.



Anthony

WISeAgent
06-09-2004, 01:34 AM
I thought I manged to fix the problem by re-create the merge module again. It works for a few weird problems I've encountered before and it works again for this problem;)

But the same problem happens again today after I added a new CA to my merge module. And I realized that I was lying when I initially post this problem on the group:-)

It appears both instances happened after I added a new CA to my merge module. I'm not sure what exactly happen for the first instance, what happened today are:
1. merge module with 2 CAs are working fine, All CAs are getting executed as expected(by inspecting the install log file)

2. Added a 3rd CA to my merge module, manually add the entry to "moduleinstallexecutesequence" table with correct values. Also noticed that entries for previous 2 CAs exist in the table.

3. It builds OK, but failed when consuming it be another project which uses my merge module.

I've noticed that there are errors when performation validation to the merge module.
error 1: ICE03: "Not A Valid Foreign Key"
error 2: ICEM03: "The action 'Action1' in the 'ModuleInstallExecuteSequence' table is
orphaned. It is not a valid base action and does not derive from a valid base action"

My impression was that by adding a new CA to the merge module, some data table/tables have been damaged for whatever reason. By recreate the merge module again, it fixed the damged table, and that's might be why I have fixed the initial problem. By added a 3rd CA to the merge, it breaks the table again;( That's my theory, but I don't have any idea what has been broken?

Based on MSDN, ICE03 Not A Valid Foreign Key means:
"A column that is a foreign key into a second table contains an entry that does not exist in the primary key of the second table"

I'm not quite sure what it exactly means to my case, but I do noticed that I have the correct entry in the "custom action" table and "moduleinstallexecutesequence" table. and I'm quite sure there won't be any typro for the CAs as I've done a copy/paste to make sure the names are exeact the same.


ICEM03 means"
"ICEM03 posts the error messages for a module containing actions in a sequence table that is not a base action or derived from a valid base action."

I got no idea what it means to my case?


Regards,
W Wang

WISeAgent
06-09-2004, 09:42 PM
It turned out to be really simple;)

Two standard actions have gone missing from the ModuleInstallExecuteSequence table after adding a new Custom Action. I don't know why, but it does happened to me not once, but twice;(

After I put the missing standard actions InstallInitialized and InstallFinalized back to the table, everyone's happy and it works fine again.

For your information, if you have more than one CA uses the functions from the same DLL and you delete one of the CA, you'll be noticed that the DLL is gone missing from the Binary table. I found the best way to delete a CA is to remove it from the tables using direct editor;(