Every once in a while I need to extract the content of a .msi file in order to customize a deployment for a particular network environment. Sometimes initializing the .msi installer will temporarily extract the files into C:\Documents and Settings\<username>\Local Settings\Temp, but those files are removed once the installer exits.
To extract files from a .msi file at the command line, type:
msiexec /a PathToMSIFile /qb TARGETDIR=DirectoryToExtractTo
For example, to extract files from f:\zenworks\zfdagent.msi into c:\zfd701 you would type:
msiexec /a f:\zenworks\zfdagent.msi /qb TARGETDIR=c:\zfd701
The destination directory does not need to exist prior to running this command.
[update 05-20-2009]
I have a new favorite MSI extraction tool called LessMSIerables. Check it out!
{ 16 comments… read them below or add one }
Thanks for the info on How to extract .msi file in windows xp. It was very helpful and plus i did not have to download another utility in order to do so.
Bah, doesn’t work with msi files that INSIST on installing crap for all users when you are not an administrator.
Very handy to know that. I needed to get a copy of RoboCopy out of the 2003 Resource Kit to use on a Windows 2000 machine. Did the job nicely for me.
Thanks for sharing this. I just need to clarify that it’s important to specify the full path to the destination directory in TARGETDIR property. If your path is not fully qualified then the msiexec tries to connect to the server which name will be equal to the name you’ve specified.
It does NOT work on Wine 0.9.14, instead it shows tons of warnings and nothing happens….
Of course it’s not going to work in Wine, it’s not Windows, and not all of the resources for completing command line operations are there. Try VirtualBox.
~Night
I was tryning to extract Itune and it kept asking for administrator privilege. I think I found a way around the problem.
If I use first /ju switch. msiexec is in user mode
msiexec /ju PathToMSIFile TARGETDIR=DirectoryToExtractTo
Then I can use to extract the file
msiexec /a PathToMSIFile TARGETDIR=DirectoryToExtractTo
From the doc
/j [/t ] [/g ]
Advertises a product – m to all users, u to current user
Brilliant korser! works like a charm. Thanks.
I use Ubuntu Linux, and I’ve found that installing p7zip and running “7z x .msi” works well. (see http://www.7-zip.org). Others have had success with wine and “msiexec”.
Good luck,
/charles thayer
The next version of InstEd Plus (http://www.instedit.com/instedplus) will allow you to easily extract the files from an msi/msm into a source tree. Plus you get all the normal features of InstEd and InstEd Plus.
FYI: I published an update to the LessMSIerables utility at http://code.google.com/p/lessmsi/
Could be a nice utility but I have a particular use case that can’t be that hard to cater for. Here goes: I would like access to a the contents of an msi file that was hidden in an installshield.exe which wouldn’t install without IIS (unshield did the trick). I don’t run any Microsoft products and have taken a stance against allowing mono (dotnet) on any boxes I have control over. I hoped that the commandline option of lessmsi would give me just that but it reports dependency on dotnet.
The msi file has documentation, java libraries and the like with generic application but for some reason the requirement of Microsoft products appears at every turn, this seems strange to me.
Thanks, that was a real lifesaver. It worked perfect with .msi file containing some files.
It is great tool “Scott Willeke”
thaaaaaaaaaaanks
Good Guide – A few points I’d like to add.
The instructions here, as well as the contributions given by various users, will allow you a great deal of flexibility with .MSI files
For example:
One may extract/Install an MSI application which USUALLY could not be installed with a NON-Administrator account (eg – a “limited” account”.
I point to the users korser and Andris above. Andris reminds users to ensure the extract path is in the correct format- but more importantly, what I’d like to share is that point out the parameters suggested by korser.
They will allow you to extract the contents of MSI files – circumventing the user privilege restrictions, HOWEVER, some MSI packages may not want to extract to a SUB-folder!
They may require that you extract them to a root folder – such as on your local hard drive, OR an external thumb drive, etc.
Just thought I would mention that ^_^
hey there ..well i dont understand nothing of what you have said..but heres my problem ive been trying to install this program called steam ..some of you may know that program …well every time i hit the install button i keep on getting this error saying ERROR 1324 THE FOLDER PATH ‘PROGRAM FILES (X86)’ CONTAINS A INVALID CHARACTER AND IVE BEEN TRYING BUT I JUST CANT FIGURE OUT THE PROBLEM
{ 2 trackbacks }