Native Custom action on x64

If you create custom action through Visual studio 2005 which targets x64, You would see the Error During Build " Entry point 'xxxxxx' not found in module 'xxxxxx' for custom action 'Primary Output from xxxx'"

 

If you are using VS 2008 It will build the Application with couple of warning. But this application will fail during install again

 

To workaround this Issue

First you should use an MSI editor (such as Orca.exe) to look at your built MSI - you'll see a series of tables, like a database.

The "CustomAction" table contains all the custom actions in your MSI (some of these are built-in - not all rows here are your own custom actions). Look at the "Target" column - some rows will have a string here similar to this: "_FunctionName@4", where "FunctionName" is the name of the entrypoint of the DLL that this custom action will execute. This is case-sensitive, so don't forget to preserve case. You should update the "Target" column to be just the name of the entrypoint you expect, without the "_" or the "@4". So as an example, you would change "_Install@4" to "Install".

Once you have learned to alter the MSI the way you want it with Orca (and tested installing it), you can create a post build script which will modify your MSI using SQL statements, so that the custom actions will be re-prioritized for you automatically each time you build it.

For 64-bit Managed Custom Actions with Visual Studio

Comments