Go Back   PackageDeploy Application Packaging Forums > Package Development > Application Packaging > Platformsdk MSI

Reply
 
LinkBack Thread Tools Display Modes
Old 09-18-2008, 06:21 AM   #1 (permalink)
Richard
Guest
 
Posts: n/a
Default VC8 runtime merge module and COM registration on Vista, error 0x80

I have a problem on Vista where my COM DLLs don't register (HRESULT =
0x800736B1) .. after Googling it seems this is caused by the C runtime not
being installed. (All other DLLs that are compiled with VC8 or supplied by
others register fine.)

My installer also works fine on Windows XP.

I install the VC8 runtime stuff with the merge modules

<Directory Id="TARGETDIR" Name="SourceDir">

<Merge Id="VC8Runtime" SourceFile="C:\Program Files\Common
Files\Merge Modules\Microsoft_VC80_CRT_x86.msm" Language="1033" DiskId="1"/>

<Merge Id="VC8Policy" SourceFile="C:\Program Files\Common
Files\Merge Modules\policy_8_0_Microsoft_VC80_CRT_x86.msm" Language="1033"
DiskId="1"/>
<Merge Id="MFCRuntime" SourceFile="C:\Program Files\Common
Files\Merge Modules\Microsoft_VC80_MFC_x86.msm" Language="1033" DiskId="1"/>

<Merge Id="MFCPolicy" SourceFile="C:\Program Files\Common
Files\Merge Modules\policy_8_0_Microsoft_VC80_MFC_x86.msm" Language="1033"
DiskId="1"/>
....

And use SelfRegCost="1" to get the COM DLLs to register.

PS: I have three DLL component to install,and two of them have no problem
using SelfReg ,and only one have problem using SelfReg. When i installed
"vcredist_x86.exe", all of the three DLL component have no problem using
SelfReg.

What's the trick to getting this to work on Vista?

Thanks


  Reply With Quote
Old 09-18-2008, 06:21 AM   #2 (permalink)
Phil Wilson
Guest
 
Posts: n/a
Default Re: VC8 runtime merge module and COM registration on Vista, error 0x80

The trick is to get the C++ runtime installed on the system first! Vista
uses fusion (.NET if you like) to install the C++ runtime (previous OS
versions did not), and as a result the runtime Dlls are not available until
the install is finished (InstallFinalize).

--
Phil Wilson
Definitive Guide to Windows Installer
http://www.apress.com/book/view/1590592972


"Richard" <Richard@discussions.microsoft.com> wrote in message
news:23AF4D87-1C37-439B-A3E7-5AA9DF54E5D2@microsoft.com...
>I have a problem on Vista where my COM DLLs don't register (HRESULT =
> 0x800736B1) .. after Googling it seems this is caused by the C runtime not
> being installed. (All other DLLs that are compiled with VC8 or supplied
> by
> others register fine.)
>
> My installer also works fine on Windows XP.
>
> I install the VC8 runtime stuff with the merge modules
>
> <Directory Id="TARGETDIR" Name="SourceDir">
>
> <Merge Id="VC8Runtime" SourceFile="C:\Program Files\Common
> Files\Merge Modules\Microsoft_VC80_CRT_x86.msm" Language="1033"
> DiskId="1"/>
>
> <Merge Id="VC8Policy" SourceFile="C:\Program Files\Common
> Files\Merge Modules\policy_8_0_Microsoft_VC80_CRT_x86.msm" Language="1033"
> DiskId="1"/>
> <Merge Id="MFCRuntime" SourceFile="C:\Program Files\Common
> Files\Merge Modules\Microsoft_VC80_MFC_x86.msm" Language="1033"
> DiskId="1"/>
>
> <Merge Id="MFCPolicy" SourceFile="C:\Program Files\Common
> Files\Merge Modules\policy_8_0_Microsoft_VC80_MFC_x86.msm" Language="1033"
> DiskId="1"/>
> ...
>
> And use SelfRegCost="1" to get the COM DLLs to register.
>
> PS: I have three DLL component to install,and two of them have no problem
> using SelfReg ,and only one have problem using SelfReg. When i installed
> "vcredist_x86.exe", all of the three DLL component have no problem using
> SelfReg.
>
> What's the trick to getting this to work on Vista?
>
> Thanks
>
>



  Reply With Quote
Old 09-18-2008, 06:21 AM   #3 (permalink)
Richard
Guest
 
Posts: n/a
Default Re: VC8 runtime merge module and COM registration on Vista, error

Thanks very much, Phil Wilson.
So I must get the C++ runtime installed on Vista system first. have you
other tricks without installing C++ runtime on system first?

Thanks

"Phil Wilson" wrote:

> The trick is to get the C++ runtime installed on the system first! Vista
> uses fusion (.NET if you like) to install the C++ runtime (previous OS
> versions did not), and as a result the runtime Dlls are not available until
> the install is finished (InstallFinalize).
>
> --
> Phil Wilson
> Definitive Guide to Windows Installer
> http://www.apress.com/book/view/1590592972
>
>
> "Richard" <Richard@discussions.microsoft.com> wrote in message
> news:23AF4D87-1C37-439B-A3E7-5AA9DF54E5D2@microsoft.com...
> >I have a problem on Vista where my COM DLLs don't register (HRESULT =
> > 0x800736B1) .. after Googling it seems this is caused by the C runtime not
> > being installed. (All other DLLs that are compiled with VC8 or supplied
> > by
> > others register fine.)
> >
> > My installer also works fine on Windows XP.
> >
> > I install the VC8 runtime stuff with the merge modules
> >
> > <Directory Id="TARGETDIR" Name="SourceDir">
> >
> > <Merge Id="VC8Runtime" SourceFile="C:\Program Files\Common
> > Files\Merge Modules\Microsoft_VC80_CRT_x86.msm" Language="1033"
> > DiskId="1"/>
> >
> > <Merge Id="VC8Policy" SourceFile="C:\Program Files\Common
> > Files\Merge Modules\policy_8_0_Microsoft_VC80_CRT_x86.msm" Language="1033"
> > DiskId="1"/>
> > <Merge Id="MFCRuntime" SourceFile="C:\Program Files\Common
> > Files\Merge Modules\Microsoft_VC80_MFC_x86.msm" Language="1033"
> > DiskId="1"/>
> >
> > <Merge Id="MFCPolicy" SourceFile="C:\Program Files\Common
> > Files\Merge Modules\policy_8_0_Microsoft_VC80_MFC_x86.msm" Language="1033"
> > DiskId="1"/>
> > ...
> >
> > And use SelfRegCost="1" to get the COM DLLs to register.
> >
> > PS: I have three DLL component to install,and two of them have no problem
> > using SelfReg ,and only one have problem using SelfReg. When i installed
> > "vcredist_x86.exe", all of the three DLL component have no problem using
> > SelfReg.
> >
> > What's the trick to getting this to work on Vista?
> >
> > Thanks
> >
> >

>
>
>

  Reply With Quote
Old 09-18-2008, 06:21 AM   #4 (permalink)
Phil Wilson
Guest
 
Posts: n/a
Default Re: VC8 runtime merge module and COM registration on Vista, error

The only real trick is the usual one, which is to avoid calling
self-registration at install time. If thje registration data is in Class,
Registry, Typelib tables then self-registration isn't required.

Rule 19:
http://blogs.msdn.com/windows_instal...12/595950.aspx

A common issue is that it requires people to know what their registration
data really is, instead of it being a black box piece of code you call that
just does it.
--
Phil Wilson
Definitive Guide to Windows Installer
http://www.apress.com/book/view/1590592972


"Richard" <Richard@discussions.microsoft.com> wrote in message
news:9EAE9A7E-8782-4DDE-AB82-1CB9D148F04F@microsoft.com...
> Thanks very much, Phil Wilson.
> So I must get the C++ runtime installed on Vista system first. have you
> other tricks without installing C++ runtime on system first?
>
> Thanks
>
> "Phil Wilson" wrote:
>
>> The trick is to get the C++ runtime installed on the system first! Vista
>> uses fusion (.NET if you like) to install the C++ runtime (previous OS
>> versions did not), and as a result the runtime Dlls are not available
>> until
>> the install is finished (InstallFinalize).
>>
>> --
>> Phil Wilson
>> Definitive Guide to Windows Installer
>> http://www.apress.com/book/view/1590592972
>>
>>
>> "Richard" <Richard@discussions.microsoft.com> wrote in message
>> news:23AF4D87-1C37-439B-A3E7-5AA9DF54E5D2@microsoft.com...
>> >I have a problem on Vista where my COM DLLs don't register (HRESULT =
>> > 0x800736B1) .. after Googling it seems this is caused by the C runtime
>> > not
>> > being installed. (All other DLLs that are compiled with VC8 or
>> > supplied
>> > by
>> > others register fine.)
>> >
>> > My installer also works fine on Windows XP.
>> >
>> > I install the VC8 runtime stuff with the merge modules
>> >
>> > <Directory Id="TARGETDIR" Name="SourceDir">
>> >
>> > <Merge Id="VC8Runtime" SourceFile="C:\Program Files\Common
>> > Files\Merge Modules\Microsoft_VC80_CRT_x86.msm" Language="1033"
>> > DiskId="1"/>
>> >
>> > <Merge Id="VC8Policy" SourceFile="C:\Program Files\Common
>> > Files\Merge Modules\policy_8_0_Microsoft_VC80_CRT_x86.msm"
>> > Language="1033"
>> > DiskId="1"/>
>> > <Merge Id="MFCRuntime" SourceFile="C:\Program Files\Common
>> > Files\Merge Modules\Microsoft_VC80_MFC_x86.msm" Language="1033"
>> > DiskId="1"/>
>> >
>> > <Merge Id="MFCPolicy" SourceFile="C:\Program Files\Common
>> > Files\Merge Modules\policy_8_0_Microsoft_VC80_MFC_x86.msm"
>> > Language="1033"
>> > DiskId="1"/>
>> > ...
>> >
>> > And use SelfRegCost="1" to get the COM DLLs to register.
>> >
>> > PS: I have three DLL component to install,and two of them have no
>> > problem
>> > using SelfReg ,and only one have problem using SelfReg. When i
>> > installed
>> > "vcredist_x86.exe", all of the three DLL component have no problem
>> > using
>> > SelfReg.
>> >
>> > What's the trick to getting this to work on Vista?
>> >
>> > Thanks
>> >
>> >

>>
>>
>>



  Reply With Quote
Old 06-03-2009, 06:02 AM   #5 (permalink)
HookEm
Guest
 
Posts: n/a
Default Re: VC8 runtime merge module and COM registration on Vista, error

If you're only targeting Vista or higher systems (may also work on XP but
won't work on 2K):

I think you can also install the C++ runtime files as private assemblies to
your application (TARGETDIR) folder by adding the appropriate folder located
under the [VS2005_TARGETDIR]\VC\REDIST\ [X86 || AMD64]\ folder. See the
[VS2005_TARGETDIR]\redist.txt for what file bundles to include in your
install.
--
Colby


"Richard" wrote:

> Thanks very much, Phil Wilson.
> So I must get the C++ runtime installed on Vista system first. have you
> other tricks without installing C++ runtime on system first?
>
> Thanks
>
> "Phil Wilson" wrote:
>
> > The trick is to get the C++ runtime installed on the system first! Vista
> > uses fusion (.NET if you like) to install the C++ runtime (previous OS
> > versions did not), and as a result the runtime Dlls are not available until
> > the install is finished (InstallFinalize).
> >
> > --
> > Phil Wilson
> > Definitive Guide to Windows Installer
> > http://www.apress.com/book/view/1590592972
> >
> >
> > "Richard" <Richard@discussions.microsoft.com> wrote in message
> > news:23AF4D87-1C37-439B-A3E7-5AA9DF54E5D2@microsoft.com...
> > >I have a problem on Vista where my COM DLLs don't register (HRESULT =
> > > 0x800736B1) .. after Googling it seems this is caused by the C runtime not
> > > being installed. (All other DLLs that are compiled with VC8 or supplied
> > > by
> > > others register fine.)
> > >
> > > My installer also works fine on Windows XP.
> > >
> > > I install the VC8 runtime stuff with the merge modules
> > >
> > > <Directory Id="TARGETDIR" Name="SourceDir">
> > >
> > > <Merge Id="VC8Runtime" SourceFile="C:\Program Files\Common
> > > Files\Merge Modules\Microsoft_VC80_CRT_x86.msm" Language="1033"
> > > DiskId="1"/>
> > >
> > > <Merge Id="VC8Policy" SourceFile="C:\Program Files\Common
> > > Files\Merge Modules\policy_8_0_Microsoft_VC80_CRT_x86.msm" Language="1033"
> > > DiskId="1"/>
> > > <Merge Id="MFCRuntime" SourceFile="C:\Program Files\Common
> > > Files\Merge Modules\Microsoft_VC80_MFC_x86.msm" Language="1033"
> > > DiskId="1"/>
> > >
> > > <Merge Id="MFCPolicy" SourceFile="C:\Program Files\Common
> > > Files\Merge Modules\policy_8_0_Microsoft_VC80_MFC_x86.msm" Language="1033"
> > > DiskId="1"/>
> > > ...
> > >
> > > And use SelfRegCost="1" to get the COM DLLs to register.
> > >
> > > PS: I have three DLL component to install,and two of them have no problem
> > > using SelfReg ,and only one have problem using SelfReg. When i installed
> > > "vcredist_x86.exe", all of the three DLL component have no problem using
> > > SelfReg.
> > >
> > > What's the trick to getting this to work on Vista?
> > >
> > > Thanks
> > >
> > >

> >
> >
> >

  Reply With Quote
Old 06-03-2009, 06:02 AM   #6 (permalink)
sm_spc_2@hotmail.com
Guest
 
Posts: n/a
Default Re: VC8 runtime merge module and COM registration on Vista, error

I had to run some utils as part of the installation and which require
the runtimes to be available. Since they require system privileges
they won't work as an immediate action after Installfinalize. The only
option that worked for me was to make my actions commit actions
scheduled just before installfinalize. I think this is down to the
fact that the C++ runtimes are not logically installed into the sxs
folders until VERY late in the installation process. It's not ideal as
a commit action can't be rolled back.

The only other way to work around this is to make the C++ runtimes a
prerequisite of your installer rather than using merge modules.
  Reply With Quote
Old 06-03-2009, 06:02 AM   #7 (permalink)
Joe
Guest
 
Posts: n/a
Default Re: VC8 runtime merge module and COM registration on Vista, error

just recently we had to add the VC8 redist to an install. The client
had an old copy of Intallshield that he wanted to use to rebuild the
install when he updated the files.

the msm was a disaster. it had this problem the file count is higher
than what the compressed cab says it is after the merge module is
added. This is a known issue with later Installshield products so it
is not surprising it is also with the earlier ones. see
http://kb.acresso.com/selfservice/vi...rnalID=Q107481


what we did as to do sxs install. We had folders of the required
runtimes next to the app exe. see http://msdn.microsoft.com/en-us/libr...16(VS.80).aspx


Sincerely,
Joe Mele
631 615 7213
Youseful Software
www.youseful.com
linkedin profile: http://www.linkedin.com/in/joemele
FileMaker Business Allaince Member
Embarcadero Technology Partner
Uniloc Implementation Partner



On Apr 15, 3:17*am, sm_sp...@hotmail.com wrote:
> I had to run some utils as part of the installation and which require
> the runtimes to be available. Since they require system privileges
> they won't work as an immediate action after Installfinalize. The only
> option that worked for me was to make my actions commit actions
> scheduled just before installfinalize. I think this is down to the
> fact that the C++ runtimes are not logically installed into the sxs
> folders until VERY late in the installation process. It's not ideal as
> a commit action can't be rolled back.
>
> The only other way to work around this is to make the C++ runtimes a
> prerequisite of your installer rather than using merge modules.


  Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 11:03 PM.


vBulletin, Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
2007 - 2012 PackageDeploy.com