Wine Traffic #211 For 20�Feb�2004

By Brian Vincent

Table Of Contents

Introduction

This is the 211th issue of the Wine Weekly News publication. Its main goal is to slouch. It also serves to inform you of what's going on around Wine. Wine is an open source implementation of the Windows API on top of X and Unix. Think of it as a Windows compatibility layer. Wine does not require Microsoft Windows, as it is a completely alternative implementation consisting of 100% Microsoft-free code, but it can optionally use native system DLLs if they are available. You can find more info at www.winehq.org (http://www.winehq.org)

Mailing List Stats For This Week

We looked at 170 posts in 543K.

There were 58 different contributors. 30 posted more than once. 24 posted last week too.

The top posters of the week were:

1. News: WineHQ Updates, WineX 3.3

14�Feb�2004�-�20�Feb�2004 (3 posts) Archive Link: "News"

Topics: News

People: Transgaming,�,�News,�TransGaming

WineHQ saw quite a few site updates this week. A history of Wine (http://www.winehq.com/site/history) has been added. For the most part it's the same as what appeared in WWN #183 (http://www.winehq.org/?issue=183) . The status pages (http://www.winehq.org/site/status) were updated, including two new pages for porting status (http://www.winehq.com/site/status_porting) and Winecfg options (http://www.winehq.com/site/status_options) . The introduction page (http://www.winehq.com/site/about) now has a short index of resources that were previously buried a few links deep. Lastly, the Who's Who (http://www.winehq.com/site/who) page has been completely rewritten and includes new bios of Wine developers.

All of those items are on the To Do (http://www.winehq.com/site/todo_lists) list. It was updated to reflect the changes. I guess now is as good of a time as any to start keeping track of how progress is going on the To Do items:

Some newsworthy items came out of TransGaming this week. The biggest story is the release of WineX 3.3:

The majority of the technical improvements in WineX 3.3 have been driven by the implementation of support of Steam. Support for its online games has resulted in improved socket and pipe support as well as a major enhancement to font support. In addition to Steam, this release contains copyprotection enhancements and support for Dark Age Of Camelot as well some success in making a number of other titles functional with workarounds, although not yet to a point where we can say that they are supported. You will find some of these titles listed in the Known Problems section below.

Steam is Valve's peer to peer network designed to keep games such as CounterStrike and Half-Life up-to-date with the latest versions. It also has an instant messaging client that works while you're playing a game. Their release notes (http://downloads.transgaming.com/files/winex-3.3_releasenotes.txt) have a lot of technical detail about new additions. On a side note, Point2Play was updated to release 1.2.1 (http://downloads.transgaming.com/files/point2play-1.2.1_releasenotes.txt) and now supports joystick and font configuration.

TransGaming's February Development Status and Voting Report (http://www.transgaming.com/showthread.php?news=107) outlines a lot of work in many diverse areas. In fact, there's so many things they're working on I'd have to copy the whole report to do it justice. So rather than do that, I'll let you follow the link and instead I'll just give the results of the top-ranked technology poll items:

I should also note that an article by InfoWorld, "IBM to launch MS Office for Linux" (http://www.infoworld.com/article/04/02/13/HNlinuxoffice_1.html) , caused a bit of a stir. No one really knew what to make of it but Wine is the first thing that comes to mind when you read their objectives. Late in the week another article came out refuting (http://searchenterpriselinux.techtarget.com/originalContent/0,289142,sid39_gci951306,00.html) the original claims. Whether or not something is going on behind closed doors remains to be seen, but you can bet that the technical manager that leaked the original story got his ass handed to him on a platter.

2. Theming Update

16�Feb�2004 (4 posts) Archive Link: "Re: uxtheme: drawing functions"

Topics: Configuration

People: Kevin Koltzau,�Mike Hearn,�,�Microsoft

Kevin Koltzau is making progress on adding theming to Wine. In a patch on Sunday he remarked, " With this some apps may start looking partly themed (eg. the toolbar buttons in newer versions of mIRC are themed), and we can start adding theming code to widgets"

Mike Hearn asked, " Presumably this is only if you have a native luna theme lying around somewhere, right? Do you know what files we need?"

Kevin answered:

Luna would work yes, but thats not the only theme out there Many skinning sites have sections for msstyle themes, you could check out

for example. Many themes are shipped with a ton of files, right now only the *.msstyles files are useful I've done the majority of my testing with the Luna theme, so bug reports on other themes would be appreciated

I'm working on a winelib app that will let you properly install themes, but for now you can set the following reg keys (replacing the filename to your selected theme)

Later he posted a sample app (http://www.winehq.org/hypermail/wine-patches/2004/02/0213.html) to query, install, and uninstall a theme. Alexandre asked that he merge it into Winecfg rather than leave it as a standalone program.

3. Embedding Mozilla's ActiveX Control

14�Feb�2004 (4 posts) Archive Link: "Re: SHDOCVW: Mozilla Active X control embedding done right"

Topics: Integration

People: Mike McCormack,�Dimitrie Paun,�

A few weeks ago we mentioned Mike McCormack had gotten Mozilla Active X embedding to work (issue #206 (http://www.winehq.org/?issue=206#MSHTML%20Changes) ). Well, that attempt went awry and Mike went back and worked on it some more. This week he announced:

OK, this time I've done it the right way, and it at least works for one or two apps, with a screen shot to prove it.

Screen shot was produced by installing an older version of WinAmp (winamp281_full.exe) and the Mozilla ActiveX control version 1.6 from

It would be nice if we could build Mozilla as a winelib app... ;)

To see the screenshot Mike mentions, see the post on wine-patches. (http://www.winehq.org/hypermail/wine-patches/2004/02/0176.html) Dimi wondered, " Very cool indeed Mike! One thing that I've noticed is that the code uses a lot of Mozilla dependent names, but the only thing that's actually Mozilla specific is the CLSID. Shouldn't we just read that info from the registry (from some sort of HtmlControl key), so that people can experiment with other things as well (e.g. IE) just by changing the configuration?"

Mike felt switching to native IE was just a simple config file change:

Well, the way to experiment with IE is to do:

since shdocvw is part of Internet Explorer itself.

4. Winetest Parser Committed

19�Feb�2004 (2 posts) Archive Link: "tools/winetest README builds.txt dissect gathe ..."

Topics: News

People: Ferenc Wagner,�,�News

Ferenc Wagner has been working for quite a while on integrating the test results from Wine's test suite into the web site. This way a bunch of tests can be performed on real Windows boxes to make sure we have a baseline to measure Wine against. Once we get the test results they need to be parsed and organized in some fashion. That's what Ferenc's been working on. An initial commit was done this week, although it's not working yet. The basic framework is complete and you can find it in the tools (http://cvs.winehq.org/cvsweb/tools/winetest/) module in CVS. Ferenc wrote the following README file about it:

This machinery is for receiving and analysing the reports resulting from running programs/winetest. The winetest program is a single- executable version of all the DLL conformance test programs suitable for unattended testing and report submitting. This package provides the destination for that and presents the results in an ordered form.

  • winetest.conf
  • winetest.cgi
  • winetest.cron
  • dissect
  • gather
  • summary.css, summary.js, resultform.html
  • builds.txt
  • 5. Kernel Driver (SafeDisc) Initial Support

    16�Feb�2004�-�17�Feb�2004 (4 posts) Archive Link: "Re: PATCH: ntoskrnl.exe"

    Topics: Patches

    People: Marcus Meissner,�Mike Hearn,�,�Uwe Bonnes,�Carlos Lozano

    Marcus spent some time this week getting Windows kernel drivers loading. Specifically, he tried to get SafeDisc working so that copy protection on games would be support. This was discussed a bit at WineConf and various ideas were kicked around. SafeDisc isn't working yet, and it's not even clear it's possible to support it, but Marcus took a stab at it. >From his changelogs:

    #1:

    This implements some very basic and functional kernel driver loading and execution.

    Currently only tested with one driver and with just DeviceIoControl support.

    Changelog:

    #2:

    This is sufficient to support the first windows kernel driver.

    Note the lack of fastcall support (I just ignore the IofCompleteRequests arguments anyway).

    Run necessary tools for dll adding ;)

    Changelog:

    This led Uwe Bonnes to ask what was working and what was still unsupported. Marcus explained, although in theory the SafeDisc driver should be working, it wasn't:

    There is no need for any setup.

    secdrv.sys of InstallShield just requires some functions of ntoskrnl.exe, which I have implemented to a degree it that it functions.

    As of working, in Need for Speed v4 from Electronic Arts I now see the SafeDisc[tm] Splashscreen, then it is seeking on the CD pretty heavily, then the program terminates.

    So consider the first step towards SafeDisc support done as soon as they are merged to CVS.

    The driver, secdrv.sys, ships with each game using SafeDisc copy protection. It gets loaded when the game starts up, and until now wasn't supported at all. Mike Hearn theorized why it still wasn't working:

    For the record (we already discussed this a bit on IRC) this is probably SafeDisc taking seek-time profiles from the CD drive. SafeDiscs contain certain blocks in unusual widely-spaced ordering that is not possible to recreate using standard CD burners. By reading each block in turn and checking that the seek times are high enough they can verify the CD has not been copied using consumer-grade equipment.

    This test, in other words, should pass - as long as the Linux/Wine CD subsystems have similar timing profiles to Windows (gulp)

    "Similar timing profiles" means the Linux driver for the CD-ROM and the Windows driver must operate in almost the exact same manner. If the driver expects a certain amount of time to read blocks on Windows it must take the same amount of time on Linux. Carlos Lozano pointed out things are further complicated by the fact that several different versions of SafeDisc exist and they operate in different ways.

    6. Registry Setup Script

    14�Feb�2004�-�15�Feb�2004 (7 posts) Archive Link: "Setup .inf files"

    Topics: Configuration

    People: Chris Morgan,�,�ReactOS,�Steven Edwards

    One of the big to-do items is to cut over to the new configuration tools - winecfg and regedit. Both of them are now usable to the point where all of the wine config items can be stored in the registry. Right now we have some items in the default registry and other items still in .wine/config. The idea is to make the config file go away.

    That leads to the question, how do you set up a registry if you don't have one? This isn't too unlike trying to get a config file if you don't have one. Except, Windows already has a mechanism for setting up and changing a registry - INF files. (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/setupapi/setup/about_inf_files.asp) There is a caveat though. In order to install a registry you need to have the proper directory structure in place so Wine knows where "Windows" (c:\windows) is. For now, we won't worry about that little detail and just go on to cover Chris Morgan's work in this area. Chris announced an initial implemention of setting up the registry from an INF file:

    Here is a first pass at replacing winedefault.reg with a windows inf file and dll registration. The registry entries in the inf file are not complete. Other than quite a few missed entries I've also left out the keys for Codepages and the Country List entries as these are pretty large(lots of typing, I'm lazy).

    setupregistry is a shell script that registers dlls with regsvr32 and then installs the inf file using rundll32. Registering ddraw.dll results in a crash on my machine even though regsvr32 says it was registered successfully.

    The best documentation I've found thus far for inf files, http://www.leeos.com/infdoc.html#Top (http://www.leeos.com/infdoc.html#Top) , doesn't have anything about running programs from inside of an inf file. If this is possible it would probably make more sense to have the inf file register the dlls.

    I've also attached a patch to implement InstallHinfSectionW() which passes the inf file to lower level setupapi functions for installation. Wasn't sure what the root key parameter to SetupInstallFromInfSectionW() should be, set it to \\HKEY_CURRENT_USER for now.

    Some folks suggested using the RunOnce registry key entries to execute the DLL self registration. I mentioned to Chris that two INF sections seem to exist that would do the same thing: RunPreSetupCommands and RunPostSetupCommands. Chris looked into it and confirmed they exist even though they're highly undocumented. Steven Edwards mentioned the ReactOS tree was also working on implementing those sections but they weren't completed yet. Chris decided to work on them on his own.

    Sharon And Joy

    Kernel Traffic is grateful to be developed on a computer donated by Professor Greg Benson and Professor Allan Cruse in the Department of Computer Science at the University of San Francisco. This is the same department that invented FlashMob Computing. Kernel Traffic is hosted by the generous folks at kernel.org. All pages on this site are copyright their original authors, and distributed under the terms of the GNU General Public License version 2.0.