FoireAuxQuestions

Contents

  1. Questions générales
    1. Comment lancer Wine?
    2. Quelle est la différence entre Wine, CrossOver Linux, et Cedega?
    3. Can I use Wine to install drivers for my hardware?
    4. Why do some people write WINE and not Wine?
    5. Is Wine an emulator? There seems to be an argument.
    6. Does Wine hurt Linux?
    7. Why does Wine have a Windows version on the download page?
    8. Est-ce que Wine fonctionne en mode 64-bit ?
    9. When will Wine-1.0 be released?
    10. Where can I get further help?
  2. Using Wine
    1. When I click on a .exe file in my file Manager, nothing happens.
    2. Which sound driver should I select in winecfg?
    3. I'm using OSS in Wine and I have no sound.
    4. My program froze up, how do I close it?
    5. How do I get Wine to launch an individual application inside of a virtual desktop?
    6. My application complains about being unable to change the resolution or color depth.
    7. My X screen won't go back to its normal resolution after running a game fullscreen.
    8. Can I run applications directly off of a Windows installation without reinstalling them?
    9. How do I know what version of Wine I have?
    10. Should I run Wine as root?
    11. How do I uninstall Wine? How do I wipe the virtual Windows installation?
    12. The application I am trying to run complains that it needs 256 colors but I have millions of colors.
    13. I'm using Beryl/XGL/Compiz and get poor performance/odd messages/broken applications
    14. Running winecfg seems to hang or complain about files when I click the audio tab
    15. How do I edit the Wine registry?
    16. I have an MSI file, how do I install/run it?
    17. My CD or DVD disc won't eject
    18. My program fails to do networking, but Linux can get online
    19. I want to pass command line arguments to my program
  3. Applications
    1. How do I uninstall Windows applications?
    2. Will Wine work with my application?
    3. Does Wine support DirectX? Can I install Microsoft's DirectX under Wine?
    4. Can I install Microsoft .NET or an application that needs it?
    5. How do I install Internet Explorer in Wine?
    6. How come Wine doesn't work well with copy protection?
    7. My application worked with an older version of Wine, but now it's broken!
    8. I really need this particular application to work. How can I go about making this happen?
  4. Performance
    1. What are the system requirements for Wine?
    2. Is Wine slower than just using Windows?
    3. I get lots of "fixme:" messages in the terminal and Wine runs a bit slow.
  5. Apple
    1. How do I install Wine on my Mac?
    2. Can I use Wine on an older Mac without an Intel chip?
  6. Helping Wine or becoming a Wine developer
    1. How do I download the very latest source code for testing purposes?
    2. I think I've found a bug. How do I report this bug to the Wine programming team?
    3. How do I become a Wine developer? What do I need to know?
    4. I have written some code that I would like to submit to the Wine project. How do I go about doing this?
    5. How can I help contribute to the Wine project, and in what ways?
    6. Who can't contribute to Wine?
    7. Can I contribute if I've only seen the source to ATL, MFC, and/or msvcrt?
  7. Independent Software Vendor Questions
    1. Can I use Wine to port my Win32 sources to Unix?
    2. Will MFC work with Wine? What do I need to do?
    3. Are there any commercial applications which have been ported using Wine?
    4. Can I build one large Monolithic application?
    5. How can I detect Wine?
  8. Old content
    1. What undocumented APIs / interfaces are not understood? Would seeing Microsoft source help? !!!
    2. What parts of Windows does Wine not implement? !!!
    3. Does it matter what filesystem I use? Windows only supports Fat32 and NTFS. !!!
    4. Will Wine run only under X, or can it run in character mode? !!!
    5. Can I launch a Unix program from a Windows program?

Questions générales

Comment lancer Wine?

Wine n'est pas destiné à être utilisé directement, mais plutôt à vous permettre d'utiliser vos applications Windows. Il vous suffit donc de lancer l'application qui vous intéresse, et Wine devrait automatiquement être chargé pour les exécuter. Vous pouvez configurer votre environnement Wine grâce à winecfg, et vous pouvez consulter le contenu de votre pseudo disque c: Windows dans .wine/drive_c.

Si vous désirez consulter un guide général sur l'utilisation de Wine, lisez le Guide Utilisateur. Cependant de manière générale utiliser Wine devrait se résumer à cliquer sur l'application qui vous intéresse dans le menu Gnome, KDE ou autre.

Lorsque vous utilisez la ligne de commande il y a deux principales méthodes pour lancer une application. La première méthode consiste à faire un chdir vers le répertoire du programme puis à le lancer, par exemple:

cd "~/.wine/drive_c/Jeux/Tron" && wine tron.exe 

La seconde méthode ne devrait être utilisée que lorsque vous avez lancez une application qui a besoin d'accéder à plusieurs CDs (elle vous permet d'échanger les CDs), car elle ne marche pas à tous les coups. Elle consiste à utiliser le chemin Windows complet ainsi...

wine "C:\Jeux\Tron\tron.exe" 

N'utilisez pas le chemin complet Linux, c'est à dire "wine /repertoires/monjeu.exe", ou en double-cliquant sur les icônes dans votre gestionnaire de fichiers (parfois cela marche mais plus souvent cela échoue avec une erreur quelconque).

La raison en est que Wine passe ce chemin au programme Windows tel quel dans argv[0]. Cela correspond exactement à ce que cmd.exe fait et Wine a des tests unitaires complets à ce sujet. Cependant certains programmes s'attendent à y trouver un chemin Windows complet et ne fonctionnent pas si ce n'est pas le cas. De nombreux programmes écrits avec les outils de Borland ont ce problème en raison d'une erreur dans la documentation de Borland.

Si vous utilisez Gnome, KDE ou XFCE4, alors après avoir installé une application avec Wine vous devriez trouver un sous-menu Wine qui contient tous les menus de vos applications Windows (dans la mesure ou vous leur avez dit de créer des racourcis dans le Menu Démarrer). Si une application semble manquer, lancez "wineboot" et reessayez.

Quelle est la différence entre Wine, CrossOver Linux, et Cedega?

Wine is the base of the project, where most of the work is being done. Wine is currently a beta software project, intended mainly for developers, testers, and early adopters at the moment. Despite Wine's beta limitations, tens of thousands of people nevertheless use "vanilla" Wine successfully to run a large number of Windows programs.

CrossOver Linux is a product made by CodeWeavers that is based directly on Wine with a few proprietary add-ons. Unlike the biweekly Wine releases, CrossOver releases are rigorously tested for compatibility with CodeWeavers' supported applications in order to prevent regressions. CodeWeavers employs a large portion of the Wine developers and provides a great deal of leadership for the project. All improvements to Wine eventually work their way into CrossOver.

Cedega is a product from TransGaming. TransGaming forked Wine back in 2002 when Wine had a different license, closed their source code, and rebranded their version as specialized for gamers. TransGaming currently gives back very little code to Wine. Cedega is not just "Wine with more gaming support" - many games run better under Wine than Cedega. Currently, Wine has more advanced Direct3D support than Cedega, but Cedega still has more advanced copy protection support due to TransGaming's licensing of (closed source) code from a handful of copy protection companies. Unlike Crossover, most improvements to Wine don't get into Cedega due to Cedega's proprietary licensing.

For more information on how this happened, see Wine History

Can I use Wine to install drivers for my hardware?

No. With the possible future exception of some printer drivers, Wine requires your hardware to already be working on your operating system. The technical reason for this is that Wine, like most applications, runs in user mode and not kernel mode.

Why do some people write WINE and not Wine?

They are using the acronym "Wine Is Not an Emulator", the original name for the project. While recursive acronyms are clever, there really is no point to the capital letters. They look ugly, so please use the simpler, current name of the project: Wine. It's what we use.

Is Wine an emulator? There seems to be an argument.

When users think of an emulator, they tend to think of things like Super Nintendo emulators or virtualization software. This is the wrong way to think about Wine - Wine runs Windows applications in essentially the same way Windows does. There is no inherent loss of speed due to "emulation" when using Wine, nor is there a need to open Wine before running your application.

Does Wine hurt Linux?

Wine increases the usefulness of Linux, makes it easier for users to switch to Linux, and makes it easier for Windows developers to make applications that work on Linux. See the Debunking Wine Myths article for a fuller answer.

Why does Wine have a Windows version on the download page?

The Windows version allows Wine developers to test out the completeness of Wine DLLs by replacing those on Windows. At least for now, this is mainly for developers. However, in the future once we finish our DirectX 10 implementation, we may be able to implement Direct3D 10 in Windows XP the same way it runs in Wine: by translating DirectX calls to OpenGL ones.

Est-ce que Wine fonctionne en mode 64-bit ?

Yes, but setting up Wine varies from distribution to distribution. See WineOn64bit for further details.

When will Wine-1.0 be released?

There's no date set yet. See WineReleaseCriteria for our goals for 1.0.

Where can I get further help?

The documentation and mailing lists are excellent resources. You'll most likely want the wine-users mailing list, however if you're an ISV looking at porting an application with Winelib you can also try wine-devel.

The IRC channel: #WineHQ on irc.freenode.net. Usually several knowledgeable Wine users hang out there, and often developers will lurk there too.

There's also a usenet newsgroup, but you really should use the mailing list instead. The mailing lists are what the developers use and monitor, so you're more likely to get help. Anyway, the newsgroup is comp.emulators.ms-windows.wine.

Using Wine

When I click on a .exe file in my file Manager, nothing happens.

This still happens on many distributions; it's a bug. However, it may not be a bug in Wine so much as a bug in the desktop environment (eg GNOME) or a bug in the way Wine is packaged. Double clicking is currently a bad way of running EXE files anyway, as it doesn't correctly set the PATH so applications may fail to start complaining that they cannot find files they rely on.

Wine-created desktop shortcuts and start menu entries, however, should work just fine.

The standard workaround for this is to open a terminal window, navigate to the folder where your application is, and run it by typing wine (program).exe. Running wine in this fashion will also output any runtime errors or fixmes to the terminal window. This may not be the friendliest way to use Wine, but at the moment it is the most effective.

Which sound driver should I select in winecfg?

Currently, OSS has the best sound support. However, there is a Google Summer of Code project to fix the ALSA and Direct Sound code, so keep an eye on ALSA although as of right now it is not recommended for use due to its instability. The Esound driver is not terrible.

I'm using OSS in Wine and I have no sound.

Unless you're using a sound card with an emu10k1/2 chipset (SB Live!/Audigy) or another type of card that supports "Hardware Mixing" then you can only ever have one application using sound at the same time. If you have aRts (KDE sound system), ESD (Gnome sound system) or any music apps open then you simply wont hear anything from Wine. You need to kill or close all these programs before being able to get sound from Wine. To work out if anything has locked your sound-card already you can do "cat /dev/urandom >> /dev/dsp". If you get an error message it means that something is using it. If you get loud static this means that your sound card is clear and ready for use.

My program froze up, how do I close it?

If you ran the program from a terminal window by typing wine (program).exe, you can usually just go back to that terminal window and press ctrl+c. If you ran the application some other way, such as from a launcher shortcut, then you can open up a terminal and forcibly kill the process:

killall -9 Application.exe 

If you want to kill all Wine programs at once, you can run:

wineserver -k 

You can also open up a Wine version of the Windows task manager by running "wine taskmgr" in a terminal. This will allow you to cancel individual Wine processes.

If you are getting a complete deadlock and are unable to even use your mouse after running Wine, it's probably not a specific problem with the Wine software. Wine is a user-level process, and shouldn't be able to completely hang the operating system under any circumstances. Instead, Wine is likely exposing a deeper problem with the system, such as a defective hardware driver.

How do I get Wine to launch an individual application inside of a virtual desktop?

Winecfg does not allow the setting of virtual desktops for individual applications, however you can work around this by using the following command. Of course, replace program.exe for what your program's name is, and change the resolution to the size of the virtual desktop you want.

wine explorer /desktop=name,1024x768 program.exe 

My application complains about being unable to change the resolution or color depth.

You generally need to edit the Screen section of your /etc/X11/xorg.conf to support additional color depths and resolutions. There may also be a problem with Xrandr.

My X screen won't go back to its normal resolution after running a game fullscreen.

You can often work around this by changing the screen resolution and then changing it back again under the system preferences.

Alternatively, you can run this terminal command to restore your X settings:

xrandr -s 0 

Can I run applications directly off of a Windows installation without reinstalling them?

Generally, no. Unless you know otherwise, you should leave your Windows installation alone and install things "fresh" into Wine. Most applications store their configuration data outside of their own folders, such as in the Windows registry.

This isn't unique to Wine: you'll run into a similar problem under Windows itself if you try and run applications from another Windows installation. Wine (or the other Windows installation) has no way of seeing this data unless it was written into Wine's registry by the program installer.

Some applications, however, are designed to be "portable" and don't use the registry at all, instead storing all of their settings in a file alongside the executable.

How do I know what version of Wine I have?

Open up a terminal and run wine --version. It will say something like "wine-0.9.34" or if you are using GIT (it's like CVS or SVN) then you will have a version along the lines of "wine-0.9.36-139-ge79a94d".

Should I run Wine as root?

NEVER run Wine as root. Doing so gives Windows programs (and viruses) full access to your computer and every piece of media attached to it. Running with sudo also has these same risks but with the added bonus of breaking the permission on the users ~/.wine folder in the process. If you have run Wine with sudo you need to sudo rm -rf ~/.wine and then run winecfg to set wine back up. You should run Wine as the normal user you use to login.

How do I uninstall Wine? How do I wipe the virtual Windows installation?

You can remove your virtual Windows installation and start from scratch by eliminating (or renaming) the hidden .wine directory in your home folder, such as with rm -rf ~/.wine

If you want to remove Wine entirely after you installed it with your distribution's package manager, you can generally uninstall in the same way. Note, however, that uninstalling Wine will not eliminate the virtual Windows installation - to do that you must follow the instructions above.

Since Wine is beta software, periodically we may update the default configuration generated when you first use Wine. Sometimes users have success getting an application to work by wiping (or moving) their ~/.wine folder, rerunning winecfg with the new Wine version, and reinstalling the application.

The application I am trying to run complains that it needs 256 colors but I have millions of colors.

This is a bug in Wine. See http://bugs.winehq.org/show_bug.cgi?id=7334

For now, there are a few workarounds you can try. See 256ColorsWorkarounds

I'm using Beryl/XGL/Compiz and get poor performance/odd messages/broken applications

Using composite display managers in Linux tends to cripple OpenGL performance or break OpenGL entirely which is why we recommend that you disable them and remove composite from XOrg entirely before trying to use Wine. If you are using one and experiencing slow performance then DO NOT FILE BUGS as this is not a Wine bug. Just because TuxRacer runs fine doesn't mean it is Wine's fault, Windows games normally require a little more umph than basic Linux native games. Also to make sure, run glxinfo and make sure that it says "Direct Rendering : Yes".

Running winecfg seems to hang or complain about files when I click the audio tab

The hang is caused by the "NAS" sound driver. This causes it to pause for a while but it should respond eventually. The only way to get around this is to remove NAS from your system and/or build Wine without NAS support in the first place. If you see messages about JACK in the terminal they can be ignored unless you intend to use the JACK driver. If you wish to use the JACK driver then you need to install JACK's libraries onto your machine before JACK will work.

How do I edit the Wine registry?

The Wine registry is the .reg files in ~/.wine, however you should not edit these files by hand due to the encoding that they use. Always use the regedit program that comes with Wine. This can be run by typing regedit in the terminal. Wine's regedit is virtually identical to the Windows version of regedit and also supports importing and exporting of registry files. NEVER try and import your entire Windows registry, this will just break Wine.

I have an MSI file, how do I install/run it?

MSI files cannot be run directly, you need to use the "msiexec" program. MSI files can be installed in Wine from the terminal like this

wine msiexec /i whatever.msi 

That will then run the MSI program the same as if you had double-clicked it in Windows.

My CD or DVD disc won't eject

Try wine eject. It is a function to free up, unlock, and eject the drive.

My program fails to do networking, but Linux can get online

You need to make sure that your hostname resolves to the IP address of your network interface. To set this up correctly, you can type the following from a terminal:

hostname 

This will return your hostname the way your computer sees it. Now, you need to open an editor with system administrator privileges, how you do this will depend on the distribution you are using. Open the file /etc/hosts and see if there is an entry for your hostname. Assuming your hostname is "yourhost" and your network IP address is 192.168.0.23, the entry might look like this:

127.0.0.1      yourhost.yourdomain.com      yourhost 

Change this to (or add, if there is no such line):

192.168.0.23   yourhost.yourdomain.com      yourhost 

For most Windows games with networking problem, this is all you need to get networking to work.

I want to pass command line arguments to my program

If you're using a program with switches on Windows, for instance:

quake.exe -map e1m1 

Then you can do the equivalent in Wine by running:

wine quake.exe -map e1m1 

That is, the command line is identical, except with a wine in front. Note, however, that you may need to escape certain special characters with backslashes due to the way they're handled in the Linux shell. For instance:

quake.exe -map C:\Quake\e1m1.bsp 

Becomes:

wine quake.exe -map C:\\Quake\\e1m1.bsp 

For more information on using backslashes, see: http://www.tuxfiles.org/linuxhelp/weirdchars.html

Applications

How do I uninstall Windows applications?

Wine has its own built-in uninstaller - equivalent of Windows "add/remove programs" function for runnings standardized uninstallers.

In the future we'll have a shortcut to this in Wine's menu, along with a shortcut to winecfg.

The uninstaller does not remove menu entries. To remove all Wine created menu entries run the following commands

rm -f $HOME/.config/menus/applications-merged/wine*
rm -rf $HOME/.local/share/applications/wine
rm -f $HOME/.local/share/desktop-directories/wine*
rm -f $HOME/.local/share/icons/????_*.xpm

Will Wine work with my application?

Probably. If your application is remotely popular, you can find other user reports in the Application Database. If there aren't any reports using a recent version of Wine, however, your best bet is to simply try and see.

Does Wine support DirectX? Can I install Microsoft's DirectX under Wine?

Wine itself provides a DirectX implementation that, although it has a few bugs left, should run fine. Wine supports DirectX 9.0c at this time. Plans for DirectX 10 are underway.

If you attempt to install Microsoft's DirectX, you'll run into some problems. You can install the runtime, but it will not run. The runtime needs access to the Windows drivers, and Wine cannot access them for obvious reasons. The only native Microsoft DLLs that could be useful anyway are the d3dx9_xx.dll type ones, and these require you to accept Microsoft's license. Regardless, don't try and do this.

Can I install Microsoft .NET or an application that needs it?

Currently .NET apps do not run in Wine mainly due to the fact that .NET itself (1 or 2) will not install in Wine. You can try installing Mono but that only works for a fraction (read <1%) of programs so at the moment you are better off finding an alternative program or waiting until .NET is implemented in Wine one way or another.

How do I install Internet Explorer in Wine?

In short; you don't. Trying to install IE in Wine will more than likely break things due to the components and registry entries that it installs. If you need to install applications in Wine that require Internet Explorer then you install Wine's IE replacement which consists of two parts.

First you install the Gecko IE engine replacement by running the following in the terminal; wine iexplore http://www.winehq.org

The second part is installing the registry entries to fool programs; Go to http://wiki.winehq.org/UsefulRegistryKeys scroll down to HKEY_LOCAL_MACHINE and then add the "Internet Explorer" keys using regedit.

How come Wine doesn't work well with copy protection?

Copy protection uses several "dirty" methods to detect if discs are "real" or not. Some of these methods work in Wine but most do not, such as the extremely invasive StarForce system. Wine would need to be altered to allow for almost rootkit-like functionality of programs to get some of these copy protection schemes to work, so support is likely to be a long time off if ever. (Some people use illegally modified or "cracked" games with the copy protection removed, but the Wine project cannot advocate that.)

See also our page on copy protection

My application worked with an older version of Wine, but now it's broken!

These are called regressions. Please file a bug and tag it "regression" - we'll pay special attention to it, since they're a lot easier to fix when caught early. In the future, once we start making "stable" releases, we'll make great effort to ensure that there are no regressions from one stable release to the next.

I really need this particular application to work. How can I go about making this happen?

We're glad you asked. Please see our Helping Wine page for some suggestions.

Briefly, you can improve Wine yourself, convince someone else to do it for you, or try some complicated hacks involving native Windows DLLs rather than Wine's unfinished ones.

Performance

What are the system requirements for Wine?

The rule of thumb is that if your application runs fine in Windows, it should run fine on the same system using Wine. Wine, along with the operating system you use to run it, generally requires less disk space and memory than Windows itself. If you're not currently running a Windows application, Wine won't consume any resources at all other than about 20 megabytes of disk space.

Is Wine slower than just using Windows?

Actually, Wine is sometimes faster. The speed of an application depends on a lot of factors: the available hardware and their drivers, the quality of the code in the APIs the application uses, and the quality of the code in the underlying operating system.

Driver code matters a lot. If you're running a graphics-heavy application using a video card with very poor drivers such as an ATI card under Linux, performance will degrade substantially. On the other hand, Linux has superior memory management, and comes out ahead of Windows in many CPU-related tasks; see benchmarks for more information.

Sometimes, bugs in Wine can make applications excessively slow; see Performance-related bugs.

I get lots of "fixme:" messages in the terminal and Wine runs a bit slow.

Ignore them. This is for developers to see what is happening when Wine is run and to give you a little insight as to what is going on (or wrong). If there are a very large number of these messages scrolling repeatedly, you can sometimes speed Wine up a little by using "WINEDEBUG=-all wine program.exe" to run your application, which will turn off all these messages and cut down a little overhead.

Apple

How do I install Wine on my Mac?

If you are running Linux on your Mac, installing Wine is as simple as installing it under Linux. Simply visit the downloads page.

If you are running OS X there are no official builds yet. The main reason is that Apple X11 is badly broken, and Wine doesn't run well with it. We don't like giving users a bad impression of Wine.

But if you are truly adventurous and want to try it no matter what, you can find unofficial darwine *Intel* builds here. Its installation is simple and straightforward as any other dmg image: open it and drag its Darwine folder to your Applications folder. Be warned again that many applications do not run because of Apple's faulty X11 implementation and not because of wine itself. DirectDraw and Direct3D applications do not run at all, but many GDI applications will run surprisingly well, including DirectSound ones. Be sure to read the MacOSX/FAQs.

Tip: Audio output will only be enabled after you run winecfg to configure it. This can be done by double-clicking "Sample WineLib Applications->winecfg.exe".

Can I use Wine on an older Mac without an Intel chip?

No, not even in Linux. Older Macs used PowerPC processors, which are incompatible with code compiled for x86 (Intel and AMD) processors unless the code is run under CPU emulation. Wine Is Not a (CPU) Emulator, nor does it include one. The Darwine project, however, is an effort to do just that.

Helping Wine or becoming a Wine developer

See also Contributing to Wine.

How do I download the very latest source code for testing purposes?

Current Wine sources are also available via Git You will need Git 1.4 or above. If you are coming from behind a firewall, use the http:// protocol.

To clone out the entire Wine source tree (which may be slow), use

git clone git://source.winehq.org/git/wine.git wine

Be aware, though, that the initial clone of the entire Wine source tree via Git is pretty slow, especially compared to getting Wine from an FTP mirror near you. Updating to your cloned repository is reasonably fast, however.

Patch files are also available, so that you don't have to download, install, and configure the entire distribution each month if you are current to the previous release. Patch file release names follow the same numbering convention as do the general releases, and take the form

Wine-YYYYMMDD.diff.gz

Patch files are available from the same sites that distribute the full release. To upgrade to a new release by using a patch file, first cd to the top-level directory of the release (the one containing the README file), then do a "make clean", and patch the release with

gunzip -c patch-file | patch -p1

where patch-file is the name of the patch file something like Wine-YYYYMMDD.diff.gz. You can then re-run ./configure, and then run make depend && make

I think I've found a bug. How do I report this bug to the Wine programming team?

Bug reports should be submitted to our online Bugzilla system (http://bugs.winehq.org/). You should include at least the following:

  • The Wine version tested
  • The Windows application name, including the version, and, if applicable, a URL the application can be downloaded from
  • A brief description of the bug
  • The relevant parts of the output of the Wine debugger
  • A screenshot of the visual problem, if applicable

For more information about reporting bugs please see the How to report a bug section of the Wine Users Guide. Please note that you should generally avoid submitting bug reports if you have used any third party applications.

How do I become a Wine developer? What do I need to know?

If you can program C, you are off to a good start. See if there's anything that you think you think you can fix or work on. You won't have much trouble finding areas that need work in Wine. For example, find a program that you want to run that doesn't, or simply grep for FIXMEs in the source.

Once you figure out what to work on, the next step is actually doing the work and getting to know the other developers. First, download the sources via Git (GitWine for help), subscribe to the mailing lists (http://www.winehq.org/site/forums), maybe join #winehackers on irc.freenode.net, and of course, look around the source. It might not hurt to pay attention to the comp.emulators.ms-windows.wine newsgroup, although it is not used very much anymore by Wine developers. Second, you will need to debug a program, if that is what you wish to fix, or otherwise find something to patch. Once you have completed some work, create a patch. See the following question.

I have written some code that I would like to submit to the Wine project. How do I go about doing this?

With Git, you may either commit a patch to your tree and make git spit out patches that way (explained in GitWine), or just use git diff > foobar-fix.patch. If you have only created a single patch and have not committed it your tree, the git diff method might be easier, otherwise use the first method.

The next step is sending the patch in. Here, you may want to make sure your patch is in 'diff -u' format; all patches that git creates are. If the patch is non-trivial, the next step is to ask some of the other developers if they think you could improve on your patch. Anyhow, once you get it all perfect, send it into the wine-patches mailing list (http://www.winehq.org/mailman/listinfo/wine-patches). Wait a few week days to see if it gets into the main Wine repository (http://source.winehq.org/git/wine.git/?a=shortlog). If your patch was not accepted, it may be a good idea to ask for further assistance from the other Wine developers.

Make sure you read the coding practices and, if at all possible, include a conformance test to demonstrate your patch is correct.

How can I help contribute to the Wine project, and in what ways?

You can contribute programming or documentation skills, or monetary or equipment donations, to aid the Wine developers in reaching their goals.

One area where every Wine user can contribute to this project is by sending high quality bug reports to our Bugzilla and helping the developers with any follow up questions that they may have about a bug that you have come across. It is not only impossible but also impractical for a developers to have a copy of every program on the market. This is why we need your help even after you have sent in the initial bug report. If a developer has a good idea what might be causing the bug he or she may ask if you can try a patch and see if it fixes the problem. After this patch makes its way into our main development tree the bug report will be closed and your help will be appreciated by everyone.

For a list of ideas of how you can help, please consult the helping Wine page.

Who can't contribute to Wine?

Some people cannot contribute to Wine because of potential copyright violation. This would be anyone who has seen Microsoft Windows source code (stolen, under an NDA, disassembled, or otherwise). There are some exceptions for the source code of add-on components(ATL, MFC, msvcrt).

Can I contribute if I've only seen the source to ATL, MFC, and/or msvcrt?

Yes BUT not on those components. Also please state on the mailing list that you have seen the source to these and that you will not contribute to them. You are free to contribute to other areas of the Wine source code.

Independent Software Vendor Questions

Can I use Wine to port my Win32 sources to Unix?

That is the idea of Winelib. Right now you may still have some difficulties, but this is changing all the time. Read the Winelib User's Guide for info.

Will MFC work with Wine? What do I need to do?

Wine is not implementing an MFC replacement nor does it intend to. However it is possible (with a lot of work) to compile the MFC from source and thus produce an mfc42.dll.so library.

Please refer to the Winelib User's Guide for how to do this.

Are there any commercial applications which have been ported using Wine?

Here are few examples of applications ported using Wine or Winelib:

Can I build one large Monolithic application?

No. However, if you don't want Wine as a dependency, you can bundle your private version of Wine into your package (.rpm/.deb). Wine has good support for such a setup via the WINEPREFIX environment variable. This is the way Google Picasa works - they actually use the exact same binary on Windows and Linux, but in the Linux version they bundle a tested version of Wine.

How can I detect Wine?

Unless you are Microsoft trying to prevent your application from working, you really shouldn't want to do this. If there's a quirk in Wine you need to work around, it's much better to fix it in Wine. More importantly, we might soon fix it ourselves, and then your code will be mysteriously and permanently broken.

That said, there is nothing wrong with detecting Wine for survey purposes. Many developers are surprised to learn that a substantial portion of their userbase has been running their program via Wine; sometimes developers aren't even aware that this is possible. For the best way to do this, consult the wine-devel mailing list.

Old content

Links that a lot of these should be exported to:

What undocumented APIs / interfaces are not understood? Would seeing Microsoft source help? !!!

The best solution would be if the Windows API were fully documented, so Wine could be a perfect "clean-room" implementation. Seeing the source code might make it harder to prove that no copyright violations have taken place. That said, the documentation is often bad, nonexistent, and even misleading where it exists, so a fair amount of reverse engineering has been necessary, particularly in the shell (Explorer) interface. The biggest problem facing Wine though is simply lack of manpower. At one point, over 5000 people were working on Windows 2000. While Wine doesn't need to replicate all of Windows (we only cover the parts needed to make Windows programs work), that's still nearly 8 times more people working simply on one release than have ever worked on Wine, in the history of the project.

(rewrite/purge maybe: move to contributing FAQ)

What parts of Windows does Wine not implement? !!!

Wine's goal is to make it possible to run Windows applications on Unix. To this end it will provide replacements for just those DLLs and APIs that are needed by these Windows applications. This means that Wine will not provide replacements for DLLs that are not shipped with Windows or are always shipped with Windows applications (e.g. the Visual Basic run time). This also means that implementing an API that no application ever uses is not a priority. Similarly, until there are applications out there that use the Win64 API, it will not be a priority. That being said, we will certainly try to keep our options open and to improve our API coverage as we can.

Also Wine is not an operating system, so that writing device drivers is not part of Wine's goals. However if you are interested in device drivers, the Linux, FreeBSD and ReactOS kernel developers would certainly appreciate your contribution.

Similarly Wine does not try to be a desktop environment so providing applets such as a calculator, a file manager or even window manager that look like Windows, are low priority or would even best be done as a separate project. Such projects would also to a large extant be redundant with other open-source projects. Again, there are projects that would certainly appreciate your contributions in this areas, such as the Gnome or KDE desktop environments. You will get the added benefit that your contribution will then be usable by everyone, not just by Wine users.

Does it matter what filesystem I use? Windows only supports Fat32 and NTFS. !!!

Wine is written to be file system independent, so MS Windows applications will install and run under virtually any file system supported by your brand of UNIX. However please note that not all file systems / drivers support full range of features required. One such example is ntfsv3 drivers that do not provide shared-write mmap. Which can not be emulated and is required by applications such as Steam.

-(make a note about case insensitive filesystems though) - Wine is a weird application in that it might actually work better in a case-insensitive filesystem. See (case-insensitivity link) for more.

Will Wine run only under X, or can it run in character mode? !!!

Most of Wine's development effort is geared towards MS Windows' GUI, but some limited support for character mode is available with "null" driver. It is activated automatically whenever x11driver could not be loaded. However Wine still requires xorg libraries to operate properly. And this will only work for pure console applications that also do not use any parts of the system that create windows for their own use. For example some parts of OLE do create internal windows.

Wine's infrastructure is already somewhat prepared for supporting other graphics drivers than x11drv, but no real "alternative" graphics driver has been developed yet.

Can I launch a Unix program from a Windows program?

Sure, Wine supports that. Just enter the unix program name wherever a program has something that it's supposed to execute, and it should just work.

You can also, launch a Windows program from a unix program without specifically calling Wine (like .sh scripts may be directly executed) however your linux kernels binfmt_misc support needs to be configured for this to work (e.g. there is a Debian package for this).

Keep in mind that Wine operates with 2 different paths - unix and windows. When calling unix program from Wine and wise-versa don't forget to translate file paths. This can easily be done with winepath .

FoireAuxQuestions (last edited 2008-05-03 03:57:46 by nathan.n)