[This is all with .Net 1.1/VS 2003]
I am trying to create an installer which installs a shared assembly (MyLibrary.dll) in Common Files, which also is registered in the GAC. The installer also installs a service application (MyService.exe) in Program Files. Within the service application there is an Installer class to register the service, which relies on the shared assembly.
To do this I have a setup project which places the service assembly in the Application Folder, and two copies of the shared code in the Common Files Folder and the Global Assembly Cache folder.
When I try to run the installer the installation fails because the framework cannot create the installer class. The reason for this appears to be that the shared code has not been registered in the GAC at the time the custom install action is executed. If I remove the cutom action the shared assembly definitely gets registered in the GAC.
If I look inside the installer database with Orca I see that in the InstallExecuteSequence the custom actions are performed before the MsiPublishAssemblies action, which is supposed to be the action which registers assemblies in the GAC. I have tried changing the sequence so that the custom action is the last action except for InstallFinalize, and it still does not work. As far as I can tell the custom action is a deferred action, since its type is 1025.
What is more I have tried creating an installer without the custom action. If I remove the MsiPublishAssemblies action from the InstallExecuteSequence table the shared assembly
still gets registered in the GAC, which leads me to believe the MsiPublishAssemblies action is not the place where assemblies are registered, despite Microsoft's documentation.
What am I missing, and is there a way to make this kind of thing work without having to hack around inside the installer database?
The closest I've come on the internet to a solution is at
http://www.dotnet247.com/247referenc...28/140998.aspx, but what they have suggested has failed.