I have a package that runs Microsoft VC++ 2008 redistributable setup as a custom action. (Custom action type 2 and Target contains command line arguments).

It works fine on XP but fails on Vista.

Help needed!!!!
0 Comments   [ + ] Show Comments

Comments

Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.

Answers

0
Have you disabled UAC?
Answered 01/12/2010 by: VBScab
Red Belt

Please log in to comment
0
Make sure to execute the custom action in deferred sequence under System context.
Answered 01/12/2010 by: AngelD
Red Belt

Please log in to comment
0
Is there any hard-coded path in the script?
Answered 01/12/2010 by: Yaduveer
Orange Senior Belt

Please log in to comment
0
VBScab... It worked ... !! But I can't afford to disable it just for a single application.

AngelID .. some more custom actions (defined in custom DLL which was built using Visual Studio 2008) in my installer will fail to execute if VC++ 2008 Redistributable is not installed before hand...!!! (Correct me if I am not correctly interpreting custom action in deferred sequence)
Answered 01/12/2010 by: milindsm
Blue Belt

Please log in to comment
0
no hard coded path in the custom action. Basically, its a redistributable available in Microsoft SDKs. I am trying to execute it before any other custom action (defined in DLL) starts. I have specified type as 2 (EXE in Binary Table) and "/q" as a target (/q is for silent install of redistributable)
Answered 01/12/2010 by: milindsm
Blue Belt

Please log in to comment
0
VBScab... It worked ... !! But I can't afford to disable it just for a single application.

If disabling UAC solved the problem, then you've found the cause. You need to focus on finding a workaround for UAC.
Answered 01/12/2010 by: airwolf
Tenth Degree Black Belt

Please log in to comment
0
Why can't you deploy Microsoft VC++ 2008 redistributable as a prerequiste and remove the CA?

Cheers,
Rob.
Answered 01/12/2010 by: MSIPackager
Third Degree Black Belt

Please log in to comment
0
If disabling UAC solved the problem, then you've found the cause. You need to focus on finding a workaround for UAC.

Do you mean that I have to embed manifest and stuff like that?? But how??? (Correct me if I am wrong!!)
Answered 01/19/2010 by: milindsm
Blue Belt

Please log in to comment
0
Why can't you deploy Microsoft VC++ 2008 redistributable as a prerequiste and remove the CA?
...or build your own merge module? It's not like C++ runtimes are uncommon! :)
Answered 01/20/2010 by: VBScab
Red Belt

Please log in to comment
0
as Kim mentioned earlier the problem is you are running the CA as Type 2.

You cannot deploy software during immediate phase on Vista with UAC enabled. You need to add 1024 to the CA to ensure that it is run in deferred System context.

This is a common screwup by many vendors.
Answered 01/20/2010 by: jmcfadyen
Fifth Degree Black Belt

Please log in to comment
0
Deploying as a merge module is not an issue. The main issue is the other custom actions. I have some custom actions in a package whose DLL (custom action DLL) was built in Visual Studio 2008 and thus they need VC++ 2008 Redistributable before hand. I must have VC++ 2008 Redist installed on the target machine before any of the custom action as well as installation starts.


I hope I am making sense to you guys...!!!
Answered 01/20/2010 by: milindsm
Blue Belt

Please log in to comment
0
You're misunderstanding what a deferred execution for a custom action is. It is not how you build a DLL but in which user context the custom action is executed under. Deferred means the local build in system account (instead of the user whom is performing the installation) which has permission to perform system modifications.
Answered 01/21/2010 by: AngelD
Red Belt

Please log in to comment
0
Actually Kim I think I see his issue.

There are other CA's that are developed which may be needed prior to deferred execution. Therefore what is needed is the VC++ software needs to be deployed as a prereq not as a deferred CA.

You have a couple of options available which are to use a bootstrapper to deploy the VC++ prior to your requirement of the CA's that are dependant on it.

Alternatively and likely to be a better option for you is to use the EmbeddedUi api's that are available for this very thing.

Using an embedd external UI you can use the UI to call separate installers from a UI which is shared across multiple installers.

It is a little bit like the old style HTLM launch pages except instead of separate installations they are all controlled under the same installation session. Therefore failures of one installation can trigger a rollback of all previous installations.

An example of this is the MS SQL 2008 installer which actually runs multiple MSI's under a single installation window. Here is some links which can aid with this if you take this route.

http://msdn.microsoft.com/en-us/library/bb736317(VS.85).aspx
http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg33630.html
http://stackoverflow.com/questions/153431/install-a-chain-of-embedded-msi-packages-ech-using-an-embedded-ui-display-commo
Answered 01/21/2010 by: jmcfadyen
Fifth Degree Black Belt

Please log in to comment
0
You said it jmcfadyen...!!!!
BTW, I have got a workaround for it...!!! I statically linked MSVCRT90 files to custom action DLL. Size was increased a bit but then it worked. Any descent way of doing it????
Answered 01/22/2010 by: milindsm
Blue Belt

Please log in to comment
0
how do you get the file deployed prior to needing it though?

I am interested to see how you worked around this one. I personally prefer the embedded UI calls (see SQL 2008 or VS 2010 for a good example.)
Answered 01/26/2010 by: jmcfadyen
Fifth Degree Black Belt

Please log in to comment
0
I statically linked MSVCRT90 to my custom action DLL. You need to copy Microsoft.VC90.CRT folder to the location where your custom action DLL gets created. Change Runtime Library from Multi-Threaded DLL (/MD) to Multi-Threaded (/MT).

See if it helps!!!
Answered 01/26/2010 by: milindsm
Blue Belt

Please log in to comment
0
yeah I thought that was what you meant. It still means you need the copy step to happen prior to installation due to the CA in immediate.

A catch 22 situation.

If this was going to general public I would go the C++ route and use the embeddedui. If it was SDLC into common known environment just drop the file first and pretend you didnt know.
Answered 01/28/2010 by: jmcfadyen
Fifth Degree Black Belt

Please log in to comment
Answer this question or Comment on this question for clarity