This website uses cookies. By clicking Accept, you consent to the use of cookies. Click Here to learn more about how we use cookies.
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- When are Microsoft (ATL) Merge Modules "published" on Windows Vista?
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
Oct 01, 2008
02:49 PM
When are Microsoft (ATL) Merge Modules "published" on Windows Vista?
Or...
How do I get my service that requires ATL 8.0 to start during installation?
I have a service that i need to register and start during installation of our product. The service is an ATL/COM service that is built using Visual Studio 2005 SP1 and uses ATL 8.0 (8.0.50727.762). I have included the Microsoft ATL 8.0 Merge Module into our installation in order to correctly install the requisite files. This works fine on WIndows XP. However, on WIndows Vista the service fails to start during the StartServices action. Since the install halts (error 1920) when this happens, it is easy to poke around and see what is wrong. It turns out that the necessary ATL package has been installed to "C:\Windows\winsxs\InstallTemp\" but it has not yet seemingly made it's way into the recognizable WinSxS location as SxSTrace says it cannot be found.
At what point does this assembly get fully published to the WinSxS location? Is there any standard action I can add to the installation sequence to force it to be published? Any ideas for how to get a service to start during the StartServices action if the installation is also installing pre-requisties to WinSxS?
Thanks!
Robert O'Brion
AT&T Labs
How do I get my service that requires ATL 8.0 to start during installation?
I have a service that i need to register and start during installation of our product. The service is an ATL/COM service that is built using Visual Studio 2005 SP1 and uses ATL 8.0 (8.0.50727.762). I have included the Microsoft ATL 8.0 Merge Module into our installation in order to correctly install the requisite files. This works fine on WIndows XP. However, on WIndows Vista the service fails to start during the StartServices action. Since the install halts (error 1920) when this happens, it is easy to poke around and see what is wrong. It turns out that the necessary ATL package has been installed to "C:\Windows\winsxs\InstallTemp\
At what point does this assembly get fully published to the WinSxS location? Is there any standard action I can add to the installation sequence to force it to be published? Any ideas for how to get a service to start during the StartServices action if the installation is also installing pre-requisties to WinSxS?
Thanks!
Robert O'Brion
AT&T Labs
(1) Reply
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
Oct 01, 2008
03:53 PM
Unfortunatly WinSxS and GAC components are published until the COMMIT phase of inside InstallFinalize. This create a race problem if you are trying to start a service which runs in the deferred phase.
Yah, I know... dumb. I don't agree either. SxS and GAC doesn't provide a good mechanism to rollback changes so the MSI team choose to give rollback more importance then things actually working.
Commit CA's are supposed to be used for cleaning up rollback data but heh, what do I know.... I've just been writing installs for 12 years.
So there's really only a couple of things you can do:
1) Static link the ATL libs into your service EXE
2) Deploy the libraries privatly to the EXE
3) Deploy the libraries as a setup prereq using setup.exe so that it's already in the SxS before you install starts.
Yah, I know... dumb. I don't agree either. SxS and GAC doesn't provide a good mechanism to rollback changes so the MSI team choose to give rollback more importance then things actually working.
Commit CA's are supposed to be used for cleaning up rollback data but heh, what do I know.... I've just been writing installs for 12 years.
So there's really only a couple of things you can do:
1) Static link the ATL libs into your service EXE
2) Deploy the libraries privatly to the EXE
3) Deploy the libraries as a setup prereq using setup.exe so that it's already in the SxS before you install starts.
![](/skins/images/CC38E504FC9E1309DC48ACFEB4925670/responsive_peak/images/icon_anonymous_message.png)