cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
anom217
Level 8

64 bit Custom Action

I have a number of InstallScript custom actions in a Basic MSI 64-bit project that call the LaunchAppAndWait() function. In the task manager, I notice that during custom actions when LaunchAppAndWait is called, a new process named "msiexec.exe *32" is created. The existing msiexe processes are just named "msiexec.exe". Does this mean LaunchAppAndWait is using a 32-bit call to the command line?

I tried using Disable(WOW64FSREDIRECTION) before calling LaunchAppAndWait(), but it didn't seem to make a difference.

Does anyone know why this seems to be calling a 32-bit msiexec process? Is there a way to ensure a 64-bit call?
Labels (1)
0 Kudos
(5) Replies
MichaelU
Level 12 Flexeran
Level 12 Flexeran

Since the InstallScript engine is currently 32-bit, it must be run in a 32-bit host. There is no way to avoid this at this time other than switching scripting technologies. However if you are launching another process, the actual path should be used; what problems are you encountering and have you diagnosed them to be a 32-bit vs 64-bit issue?
0 Kudos
anom217
Level 8

I used LaunchAppAndWait() to launch a .exe to unzip some compresssed files I have, for example. In the task manager, the process listed when this occurs is "msiexec.exe *32".

The problem I sometimes have, and I think this actually happens to me on 32-bit as well, is the msiexec.exe process that is created as a result of LaunchAppAndWait() hangs. It takes up all of the CPU, and only after I kill the process does the rest of the installation continue. I'm not sure why this is happening, is this a common issue?

I'm worried because it doesn't seem like something that can be addressed through my InstallScript code. And although it only happens occasionally, it's occurred when I've called different things as arguments for LaunchAppAndWait(), so I don't think it's the program I'm calling.
0 Kudos
anom217
Level 8

Here is an attached log file where the installer just seemed to quit after a custom action was performed.
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

While the custom action that is running this script method would be hosted in an msiexec process, LaunchAppAndWait shouldn't launch an additional one unless it's launching msiexec.exe. Instead it should launch whatever program the parameters specify.

What flags are you passing - could any of them cause the problems you're encountering? Are you launching a program that doesn't terminate? Does LaunchAppAndWait return (try putting a MessageBox call after it)? Have you tried using LaunchApplication instead of LaunchAppAndWait?
0 Kudos
anom217
Level 8

The program I'm launching is 7za.exe, the executable for 7zip compression utility, so I'm just unzipping a file.

szApp = szPath^"7za.exe";
szCmd = " x " + szSource + " " + "-o" + szDestination + " -y";
LaunchAppAndWait(szApp, szCmd, WAIT | LAAW_OPTION_HIDDEN)

I need to wait for the unzip to finish before proceeding with the rest of the installation, so I need to use LaunchAppAndWait. And it does seem like a new msiexec.exe process is being created when the CA is being executed.

I can run the install several times and not hit a problem, but then occasionally it gets an issue, such as in the log, where it couldn't close the MSIHANDLE. Is there something I'm supposed to do to close the MSIHANDLE that is being passed into a custom action?
0 Kudos