MSI

From Wine-Wiki.org
Revision as of 10:00, 8 December 2010 by Josephblack (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contents

Introduction

This wiki depends upon users like yourself providing updates and corrections.

Continued progress has been made with Wine and MSI. Windows Installer manages the installation and removal of software by applying a set of centrally defined setup rules during the installation process. These setup rules define the installation and configuration of the installed application and you can use this service to modify, repair, or remove an existing application. The installation files are recognized by their name (.msi). This holds information regarding the application setup and installations. Windows Installer appears to be a component of Windows 2000 or later. MSI files cannot be run directly, you need to use Wine's "msiexec" program to install them

J. Hawkins [Sept 06]: InstallShield is produced and provided by Macrovision. InstallShield does require a dll in order to work: msi.dll. InstallShield is just a fancy wrapper around MSI, and, no, it's not a part of the Microsoft Windows Operating System in any way.

M.McCormack [Sept 05]: If anybody is aware of any cases of Wine's Microsoft Installer code not working, please log them in Wine's bugzilla (http://bugs.winehq.org/), assign them to me, and I will attempt to fix them.

Make sure to set "msi" = "builtin", "*msiexec" = "builtin" when testing your installers, and if possible test with the latest Wine CVS. If the installer is available as a free download, please include a link to it.


Dan Kegel's winetricks can apparently install a Microsoft version of Msiexec for those needing it. Keep in mind which msi version you want to install.. 32 bit or 64.

Installing a 32bit or 64 bit .msi

A user asked: How I install .msi files on WINE. J von Thadden [Dec 05] [wine archive http://www.winehq.org/pipermail/wine-users/2005-December/020055.html]:

wine msiexec /i xyz.msi

Anon [Sept 07]: Another way is just run:

msiexec /i fileinstaller.msi

vitamin 4 apr 2008 wine user : It is not an executable file. This is how to do it:

Code:

wine start setup.msi


2010-12 64 bit wine is still under development and needs more work. If the 64bit software does not yet run under wine, you could try the 32bit. a user tried to install python: wine msiexec /i python-2.7.1.amd64.msi [..] returned with no GUI and error message at all. He then realized from that file name this was likely a 64-bit issue. He then downloaded the 32-bit MSI version, (from http://www.python.org/download/releases/2.7.1/) [and reported]

wine msiexec /i python-2.7.1.msi

worked like a charm! [..]

msiexec

 Usage:
 Install a product:
   msiexec {package|productcode} [property]
   msiexec /i {package|productcode} [property]
   msiexec /a package [property]
 Repair an installation:
   msiexec /f[p|o|e|d|c|a|u|m|s|v] {package|productcode}
 Uninstall a product:
   msiexec /x {package|productcode} [property]
 Advertise a product:
   msiexec /j[u|m] package [/t transform] [/g languageid]
   msiexec {u|m} package [/t transform] [/g languageid]
 Apply a patch:
   msiexec /p patchpackage [property]
   msiexec /p patchpackage /a package [property]
 Modifiers for above operations:
   msiexec /l[*][i|w|e|a|r|u|c|m|o|p|v|][+|!] logfile
   msiexec /q{|n|b|r|f|n+|b+|b-}
 Register a module:
   msiexec /y module
 Unregister a module:
   msiexec /z module
 Display usage and copyright:
   msiexec {/h|/?}
 NOTE: Product code on commandline unimplemented as of yet

Auto executable MSI

An exe may give an msi error:

'/home/carl/OperaDownloads/MTSDK_v3.0.2/MTSDK_v3.0.2.exe'
Usage: Install a product: msiexec {package|productcode} [property] msiexec /i {package|productcode} [property]

Vitamin: Looks like a long known problem. You might want to extract content of the exe file. And use msiexec directly on the .msi file that's inside that archive.


[Unknown] There is a msi installer inside that file at offset 249586. Hint : $ dd if=MTSDK_v3.0.2.exe of=MTSDK_v3.0.2.msi bs=512 skip=488

464190+1 records in 464190+1 records out 237665656 bytes (238 MB) copied, 19.703 s, 12.1 MB/s

Thanks a lot. That worked and the msi file seems to install ok with 'msiexec /i file.msi'.

C. Fisher [May 08 wne user] showed how it was worked out in this case:

  1. Grep for "Microsoft Installer" in /usr/share/file/magic.
    Find \xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3E\x00\x03\x00\xFE\xFF Microsoft Installer
  2. hexedit MTSDK_v3.0.2.exe
    Search for D0CF11...
    Found at 0x3D000 (249856) just after a load of PADDING bytes. Block size is 512 so 249856/512 = 488 blocks.
  3. Use dd to extract the msi file.

[..] All I did previously was run cabextract but that extracts the contents of the msi file too instead of just removing the extra header.

He reported: The msi file runs but after I enter the registration key I can't get to the next step in the installation despite clicking Next and hitting Return several times. D. Kegel: Time to file a bug at http://bugs.winehq.org, I think.

Forum Comments

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/conditional_statement_syntax.asp 
WINEDLLOVERRIDES="msi=n;msiexec=native" setup.exe


Troubleshooting

How to override the built-in MSI?

A user reported that with their installation the had quite a few MSI errors and asked How do I override the built in msi [and install the native Microsoft MSI Installer]?

M. Hearn: "WINEDLLOVERRIDES=msi,msiexec=native" should do the trick Wine Archive Link

Installing an MSI file

A user wrote Winehq Bugzilla entry 18781: I can't install msxml3. When I try it, wine give me this error: wine: could not load L"C:\\msxml3.msi": Bad EXE format [..] I've been download the package about four or five times, and always gives me these error. I'm using the latest version of wine from repo (1.1.23).

A. English:Use

msiexec /i msxml3.msi

or

wine start msxml3.msi

Installing Microsoft MSI 2.0

[From the Wine Forums July 05] Wine Archive

  1. Run wine instmsia.exe.
    1. The installer will complain, but it will dump everything you need into Windows\Installer\InstMsi0.
  2. Copy all the stuff in there to \Windows\system32.
  3. Then (using Winecfg) set msi.dll and msiexec.exe to native, and Windows Installer will work.


A user posted [May 05]: This patch breaks installation of Microsofts MSI 2.0, InstMsiA.exe. Wine Archives

M. Hearn explained that this patch was concerning Wine and versioning logic : At WineConf I asked Alexandre if he would accept a patch that just deleted the automagic version logic and he said yes. It causes far more problems than it's worth IMHO.

R. Cohen [May 05]: The latest version of Wine does have problems with InstMsiA.exe, but I haven't seen this one. I've updated the Wiki page at http://wiki.winehq.com/NativeMsi.

S. Paschukat: I have to remove the symbolic link to msiexec.exe.so in the windows\system dir before starting InstMsiA.exe - and maybe restoring it after, like:

--------------- snip ---------------
cd ~/.wine/drive_c/windows/system
if test -e msiexec.exe" ;then
	mv msiexec.exe msiexec.exe.wine
fi
WINEDLLOVERRIDES="msiexec.exe=n,b" wine InstMsiA.exe
if test -e msiexec.exe.wine ;then
	if test -e msiexec.exe ;then
		mv msiexec.exe msiexec.exe.windows
	fi
	mv msiexec.exe.wine msiexec.exe
fi

Links

Wine Links

External Links

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox