Msi wrapped within an exe
Help!
I am trying to package an app. I thought it was going to be nice 'n easy to start with. Just one exe that they run silently here.
The thing is, this isn't just any exe.
When you run the exe (not silently), it extracts a file to the Temp dir called Vcredist_x86.exe that in turn extracts an msi called vcredist.msi (this is Microsoft Visual C++ redistributable) and a cab file called vcredis1.cab and they all delete themselves as quickly as they are created. I somehow managed to grab hold of them though
The first exe (InvolveEMV.exe) installs some files aswell as extracting this Vcredist_x86 file.
I don't want to use setup capture because of the fact that there is an msi present in the install so what i was going to do was just run the exe silently in a Custom Action through a blank msi - ya?
No - When I do this the install cr*ps out because it's trying to run an msi during the install that is part of my "silent exe". And you can't run one msi while the other is running. I've tried putting it as a Commit Execution, Deferred in System Context, but none seem to work, they all say that they can't run the second msi basically.
Any ideas how I'd do this?
Cheers,
Mark
I am trying to package an app. I thought it was going to be nice 'n easy to start with. Just one exe that they run silently here.
The thing is, this isn't just any exe.
When you run the exe (not silently), it extracts a file to the Temp dir called Vcredist_x86.exe that in turn extracts an msi called vcredist.msi (this is Microsoft Visual C++ redistributable) and a cab file called vcredis1.cab and they all delete themselves as quickly as they are created. I somehow managed to grab hold of them though
The first exe (InvolveEMV.exe) installs some files aswell as extracting this Vcredist_x86 file.
I don't want to use setup capture because of the fact that there is an msi present in the install so what i was going to do was just run the exe silently in a Custom Action through a blank msi - ya?
No - When I do this the install cr*ps out because it's trying to run an msi during the install that is part of my "silent exe". And you can't run one msi while the other is running. I've tried putting it as a Commit Execution, Deferred in System Context, but none seem to work, they all say that they can't run the second msi basically.
Any ideas how I'd do this?
Cheers,
Mark
1 Comment
[ + ] Show comment
Answers (5)
Please log in to answer
Posted by:
zopfan
8 years ago
Posted by:
gmorgan618
18 years ago
Mark,
Depending on how well you know MSI's and how comfortable you are editting them - you may want to check out Nested MSI Calls ... This will allow you to run a MSI from within an MSI ...
To avoid multiple writes to one location the MSI engine will only allow one MSI installation at a time.
Hopefully this page is still around but it will walk you through the steps of how to Nest an MSI....
http://support.microsoft.com/default.aspx?scid=kb;en-us;306439
I would recommend running your first EXE and grabbing the MSI and cab (and any mst's) that are extracted -- usually to %USERPROFILE%\LocalSettings\Temp
Edit the MSI which you would like to run last and add the other MSI('s) to the sequence. Remember that all property's are inherted by the nested MSI's so if you run the MSI with a /qb switch all nested MSI will also be run as qb ... same for ALLUSERS=1 or REINSTALL=ALL
Good Luck
Depending on how well you know MSI's and how comfortable you are editting them - you may want to check out Nested MSI Calls ... This will allow you to run a MSI from within an MSI ...
To avoid multiple writes to one location the MSI engine will only allow one MSI installation at a time.
Hopefully this page is still around but it will walk you through the steps of how to Nest an MSI....
http://support.microsoft.com/default.aspx?scid=kb;en-us;306439
I would recommend running your first EXE and grabbing the MSI and cab (and any mst's) that are extracted -- usually to %USERPROFILE%\LocalSettings\Temp
Edit the MSI which you would like to run last and add the other MSI('s) to the sequence. Remember that all property's are inherted by the nested MSI's so if you run the MSI with a /qb switch all nested MSI will also be run as qb ... same for ALLUSERS=1 or REINSTALL=ALL
Good Luck
Posted by:
aogilmor
18 years ago
Posted by:
Foleymon
18 years ago
Vcredist.exe supports the following command-line switches:
no switches = non-quiet mode, displays progress bar and reboot prompt
/q = semi-quiet mode, displays reboot message, and no progress bar
/q /r:n = no reboot message or progress bar
This is from Microsoft q259403
no switches = non-quiet mode, displays progress bar and reboot prompt
/q = semi-quiet mode, displays reboot message, and no progress bar
/q /r:n = no reboot message or progress bar
This is from Microsoft q259403
Posted by:
EdT
8 years ago
Even easier - if you are installing on a clean test machine, you can get information about the runtime from add/remove programs and just download it from Microsoft. In a corporate environment I would suggest that Visual C++ runtimes should be part of the basic operating system application payload as they are so often used. Commercial installers often deploy runtimes from the UI sequence of an MSI as the msiexec installation thread is not yet committed to installing the running MSI, but this is not possible if doing a silent install. I would caution against using any form of nested MSI install as this ties the nested MSI to the parent MSI forever and it causes the nested MSI to be removed when the parent is removed. Any updates to the nested MSI also need to be done via the parent MSI.
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.
Just use 7Zip to extract VCRedist.msi from vcredist_x86.exe. Its very simple. Very very simple. No Command prompt or run commands. No searching the required msi from temp folders.
And thus you get your required msi file to resolve the above stated problems. - zopfan 8 years ago