/build/static/layout/Breadcrumb_cap_w.png

Custom Action Failing on Vista

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

Answers (17)

Posted by: anonymous_9363 14 years ago
Red Belt
0
Have you disabled UAC?
Posted by: AngelD 14 years ago
Red Belt
0
Make sure to execute the custom action in deferred sequence under System context.
Posted by: Yaduveer 14 years ago
Orange Senior Belt
0
Is there any hard-coded path in the script?
Posted by: milindsm 14 years ago
Blue Belt
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)
Posted by: milindsm 14 years ago
Blue Belt
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)
Posted by: airwolf 14 years ago
Red Belt
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.
Posted by: MSIPackager 14 years ago
3rd Degree Black Belt
0
Why can't you deploy Microsoft VC++ 2008 redistributable as a prerequiste and remove the CA?

Cheers,
Rob.
Posted by: milindsm 14 years ago
Blue Belt
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!!)
Posted by: anonymous_9363 14 years ago
Red Belt
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! :)
Posted by: jmcfadyen 14 years ago
5th Degree Black Belt
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.
Posted by: milindsm 14 years ago
Blue Belt
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...!!!
Posted by: AngelD 14 years ago
Red Belt
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.
Posted by: jmcfadyen 14 years ago
5th Degree Black Belt
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
Posted by: milindsm 14 years ago
Blue Belt
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????
Posted by: jmcfadyen 14 years ago
5th Degree Black Belt
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.)
Posted by: milindsm 14 years ago
Blue Belt
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!!!
Posted by: jmcfadyen 14 years ago
5th Degree Black Belt
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.
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
 
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ