Replaced -dosver and -winver options by config file parameters.

This commit is contained in:
Alexandre Julliard 2002-05-23 19:35:18 +00:00
parent 45a795c0d8
commit 8c08ceb56c
9 changed files with 103 additions and 110 deletions

View File

@ -937,7 +937,7 @@ static HKEY WINSPOOL_OpenDriverReg( LPVOID pEnvironment, BOOL unicode)
switch (ver.dwPlatformId) {
case VER_PLATFORM_WIN32s:
ERR("win32 style printing used with 16 bits app, try -winver win95\n");
ERR("win32 style printing used with 16 bits app, try specifying 'win95' Windows version\n");
return 0;
case VER_PLATFORM_WIN32_NT:

View File

@ -65,7 +65,7 @@ $(BOOKNAME).ps: $(BOOK_SRCS)
db2ps $(BOOKNAME).sgml > /dev/null
wine.man: wine.man.in
sed -e 's,@bindir\@,$(bindir),g' -e 's,@dlldir\@,$(dlldir),g' $(SRCDIR)/wine.man.in >$@ || $(RM) $@
sed -e 's,@bindir\@,$(bindir),g' -e 's,@dlldir\@,$(dlldir),g' -e 's,@PACKAGE_STRING\@,@PACKAGE_STRING@,g' $(SRCDIR)/wine.man.in >$@ || $(RM) $@
install:: $(MAN_TARGETS)
$(INSTALL) -d $(mandir)/man$(prog_manext)

View File

@ -1887,37 +1887,6 @@ die folgenden Programme und Dateien installiert sein:
werden kann. Diese Optionen werden direkt von WINE interpretiert
und nicht an das aufzurufende Windows-Programm übergeben.
--managed
Standardmäßig laufen Windows-Programme mit WINE unabhängig
vom eingesetzten Windows-Manager. Dies kann zu Problemen bei
der gleichzeitigen Verwendung normaler X Programme und von
Windows-Programmen führen. Durch Verwendung der Option
--managed werden auch Windows-Programme vom Window-Manager
verwaltet, sie erhalten dann die gleichen Verzierungen wie
normale X Programme (siehe auch Abschnitt 7.5)
--winver Version
Viele Windows-Programme funktionieren nur mit bestimmten
Versionen von Windows oder verhalten sich unterschiedlich,
je nachdem mit welcher Version von Windows sie ausgeführt
werden. Dieser Parameter dient dazu, WINE anzuweisen, als
welche Windows-Version es sich ausgeben soll, wenn Programme
dies erfragen. Standardmäßig versucht WINE selbst
herauszufinden, welche Version von einem bestimmten Programm
erwartet wird. Mit Version kann folgendes angegeben werden:
win31 (Windows 3.1), win95 (Windows 95), win98 (Windows 98),
nt351 (Windows NT 3.51) oder nt40 (Windows NT 4.0). Im
Zweifelsfall empfiehlt sich win95, weil WINE zur Zeit die
meisten Gemeinsamkeiten mit dieser Windows-Version
aufweist. Beispiel: --winver win95.
--dosver Version
Wenn DOS-Programme mit Windows ausgeführt werden, erwarten
diese gelegentlich eine bestimmte Version von MS-DOS. Dazu
ist mit dem Parameter --dosver die gewünschte Version, in
der Form x.xx anzugeben. Beispiel: --dosver 7.10 (diese
Version entspricht Windows 95b).
--help
Die Option bewirkt, dass eine Übersicht über die verfügbaren
Optionen ausgegeben wird.

View File

@ -28,13 +28,8 @@ Usage: ./wine [options] program_name [arguments]
Options:
--debugmsg name Turn debugging-messages on or off
--dll name Enable or disable built-in DLLs
--dosver x.xx DOS version to imitate (e.g. 6.22)
Only valid with --winver win31
--help,-h Show this help message
--managed Allow the window manager to manage created windows
--version,-v Display the Wine version
--winver Version to imitate
(win95,nt40,win31,nt2k,win98,nt351,win30,win20)
</screen>
</para>
@ -74,25 +69,6 @@ Options:
<screen>
<prompt>$</prompt> <userinput>wine c:\myapps\foo.exe</userinput>
</screen>
<para>
Finally, if you want to pass any parameters to your windows
application, you can list them at the end, just after the
executable name. Thus, to run the imaginary
<command>foo.exe</command> Windows application with its
<parameter>/advanced</parameter> mode parameter, while
invoking Wine in <link
linkend="managed-parameter"><parameter>--managed</parameter>
mode</link>, you would do something like this:
</para>
<screen>
<prompt>$</prompt> <userinput>wine --managed foo.exe /advanced</userinput>
</screen>
<para>
In other words, options that affect Wine should come
<emphasis>before</emphasis> the Windows program name, while
options that affect the Windows program should come
<emphasis>after</emphasis> it.
</para>
<para>
If you want to run a console program (aka a CUI executable), use
@ -273,13 +249,6 @@ winspool</><entry>wnet</><entry>x11</>
</para>
</sect2>
<sect2>
<title>--dosver</title>
<para>
</para>
</sect2>
<sect2>
<title>--help</title>
<para>
@ -287,26 +256,12 @@ winspool</><entry>wnet</><entry>x11</>
</para>
</sect2>
<sect2 id="managed-parameter">
<title>--managed</title>
<para>
</para>
</sect2>
<sect2>
<title>--version</title>
<para>
</para>
</sect2>
<sect2>
<title>--winver</title>
<para>
</para>
</sect2>
</sect1>
</chapter>

View File

@ -70,6 +70,12 @@ WINE REGISTRY Version 2
# <wineconf>
[Version]
; Windows version to imitate (win95,win98,winme,nt351,nt40,win2k,winxp,win20,win30,win31)" },
;"Windows" = "win98"
; DOS version to imitate
;"DOS" = "6.22"
; Be careful here, wrong DllOverrides settings have the potential
; to pretty much kill your setup.
[DllOverrides]
@ -124,7 +130,7 @@ WINE REGISTRY Version 2
; Name of X11 display to use
;;"Display" = ":0.0"
; Allow the window manager to manage created windows
"Managed" = "N"
"Managed" = "Y"
; Use a desktop window of 640x480 for Wine
;"Desktop" = "640x480"
; Use XFree86 DGA extension if present
@ -149,7 +155,7 @@ WINE REGISTRY Version 2
;;"Synchronous" = "Y"
[fonts]
;Read documentation/fonts before adding aliases
;Read the Fonts topic in the Wine User Guide before adding aliases
;See a couple of examples for russian users below
"Resolution" = "96"
"Default" = "-adobe-helvetica-"
@ -217,7 +223,7 @@ WINE REGISTRY Version 2
[Tweak.Layout]
;; supported styles are 'Win31'(default), 'Win95', 'Win98'
;; this has *nothing* to do with the windows version Wine returns:
;; use cmdline option --winver if you want that.
;; set the "Windows" value in the [Version] section if you want that.
"WineLook" = "Win95"
[Console]
@ -258,5 +264,8 @@ WINE REGISTRY Version 2
;
;[AppDefaults\\setup.exe\\x11drv]
;"Desktop" = "800x600"
;
;[AppDefaults\\sol.exe\\Version]
;"Windows" = "nt40"
# </wineconf>

View File

@ -1,5 +1,5 @@
.\" -*- nroff -*-
.TH WINE 1 "Oct 13, 2001" "Version 20011004" "Windows On Unix"
.TH WINE 1 "May 2002" "@PACKAGE_STRING@" "Windows On Unix"
.SH NAME
wine \- run Windows programs on Unix
.SH SYNOPSIS
@ -154,19 +154,6 @@ comctl32/commctrl always as native.
Note: It is wise to keep dll pairs (comdlg32/commdlg, shell/shell32, etc.)
having exactly the same load order. This will prevent mismatches at runtime.
See also configuration file format below.
.TP
.I --dosver version
Specify the DOS version
.B wine
should imitate (e.g. 6.22) This option
is only valid when used in conjunction with --winver win31.
.TP
.I --winver version
Specify which Windows version
.B wine
should imitate.
Possible arguments are: win95, win98, winme, nt351, nt40, win2000, winxp,
win20, win30 and win31.
.PD 1
.SH PROGRAM/ARGUMENTS
The program name may be specified in DOS format (
@ -255,8 +242,8 @@ Specifies the path and name of the
.B wineserver
binary. If not set, Wine will try to load
.B @bindir@/wineserver,
and if this doesn't exist will then look for a file named "wineserver"
in the path and in a few other likely locations.
and if this doesn't exist it will then look for a file named
"wineserver" in the path and in a few other likely locations.
.TP
.I WINELOADER
Specifies the path and name of the
@ -264,7 +251,7 @@ Specifies the path and name of the
binary to use to launch new Windows processes. If not set, Wine will
try to load
.B @bindir@/wine,
and if this doesn't exist will then look for a file named "wine" in
and if this doesn't exist it will then look for a file named "wine" in
the path and in a few other likely locations.
.TP
.I WINEDLLPATH

View File

@ -62,15 +62,10 @@ static const struct option_descr option_table[] =
"--debugmsg name Turn debugging-messages on or off" },
{ "dll", 0, 1, 1, MODULE_AddLoadOrderOption,
"--dll name Enable or disable built-in DLLs" },
{ "dosver", 0, 1, 1, VERSION_ParseDosVersion,
"--dosver x.xx DOS version to imitate (e.g. 6.22)\n"
" Only valid with --winver win31" },
{ "help", 'h', 0, 0, do_help,
"--help,-h Show this help message" },
{ "version", 'v', 0, 0, do_version,
"--version,-v Display the Wine version" },
{ "winver", 0, 1, 1, VERSION_ParseWinVersion,
"--winver Version to imitate (win95,win98,winme,nt351,nt40,win2k,winxp,win20,win30,win31)" },
{ NULL, 0, 0, 0, NULL, NULL } /* terminator */
};

View File

@ -26,11 +26,11 @@
#include <stdio.h>
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
#include "wingdi.h"
#include "winuser.h"
#include "wine/winbase16.h"
#include "module.h"
#include "options.h"
#include "wine/debug.h"
#include "winerror.h"
@ -198,7 +198,7 @@ static WINDOWS_VERSION defaultWinVersion = WIN31;
/**********************************************************************
* VERSION_ParseWinVersion
*/
void VERSION_ParseWinVersion( const char *arg )
static void VERSION_ParseWinVersion( const char *arg )
{
int i, len;
const char *pCurr, *p;
@ -218,7 +218,7 @@ void VERSION_ParseWinVersion( const char *arg )
pCurr = p+1;
} while (p);
}
MESSAGE("Invalid winver value '%s' specified.\n", arg );
MESSAGE("Invalid Windows version value '%s' specified in config file.\n", arg );
MESSAGE("Valid versions are:" );
for (i = 0; i < NB_WINDOWS_VERSIONS; i++)
{
@ -237,7 +237,7 @@ void VERSION_ParseWinVersion( const char *arg )
/**********************************************************************
* VERSION_ParseDosVersion
*/
void VERSION_ParseDosVersion( const char *arg )
static void VERSION_ParseDosVersion( const char *arg )
{
int hi, lo;
if (sscanf( arg, "%d.%d", &hi, &lo ) == 2)
@ -248,11 +248,87 @@ void VERSION_ParseDosVersion( const char *arg )
}
else
{
MESSAGE("--dosver: Wrong version format. Use \"--dosver x.xx\"\n");
MESSAGE("Wrong format for DOS version in config file. Use \"x.xx\"\n");
ExitProcess(1);
}
}
/**********************************************************************
* VERSION_Init
*/
static void VERSION_Init(void)
{
HKEY hkey, appkey;
DWORD count, type;
BOOL got_win_ver = FALSE, got_dos_ver = FALSE;
char buffer[MAX_PATH+16], *appname, *p;
static BOOL init_done;
if (init_done) return;
if (!GetModuleFileName16( GetCurrentTask(), buffer, MAX_PATH ) &&
!GetModuleFileNameA( 0, buffer, MAX_PATH ))
{
WARN( "could not get module file name\n" );
return;
}
init_done = TRUE;
appname = buffer;
if ((p = strrchr( appname, '/' ))) appname = p + 1;
if ((p = strrchr( appname, '\\' ))) appname = p + 1;
if (!RegOpenKeyA( HKEY_LOCAL_MACHINE, "Software\\Wine\\Wine\\Config\\AppDefaults", &hkey ))
{
/* open AppDefaults\\appname\\Version key */
strcat( appname, "\\Version" );
if (!RegOpenKeyA( hkey, appname, &appkey ))
{
count = sizeof(buffer);
if (!RegQueryValueExA( appkey, "Windows", NULL, &type, buffer, &count ))
{
VERSION_ParseWinVersion( buffer );
TRACE( "got app win version %s\n", WinVersionNames[defaultWinVersion] );
got_win_ver = TRUE;
}
count = sizeof(buffer);
if (!RegQueryValueExA( appkey, "DOS", NULL, &type, buffer, &count ))
{
VERSION_ParseDosVersion( buffer );
TRACE( "got app dos version %lx\n", VersionData[WIN31].getVersion16 );
got_dos_ver = TRUE;
}
RegCloseKey( appkey );
}
RegCloseKey( hkey );
}
if (got_win_ver && got_dos_ver) return;
if (!RegOpenKeyA( HKEY_LOCAL_MACHINE, "Software\\Wine\\Wine\\Config\\Version", &hkey ))
{
if (!got_win_ver)
{
count = sizeof(buffer);
if (!RegQueryValueExA( hkey, "Windows", NULL, &type, buffer, &count ))
{
VERSION_ParseWinVersion( buffer );
TRACE( "got default win version %s\n", WinVersionNames[defaultWinVersion] );
}
}
if (!got_dos_ver)
{
count = sizeof(buffer);
if (!RegQueryValueExA( hkey, "DOS", NULL, &type, buffer, &count ))
{
VERSION_ParseDosVersion( buffer );
TRACE( "got default dos version %lx\n", VersionData[WIN31].getVersion16 );
}
}
RegCloseKey( hkey );
}
}
/**********************************************************************
* VERSION_GetSystemDLLVersion
*
@ -408,6 +484,7 @@ static WINDOWS_VERSION VERSION_GetVersion(void)
{
WINDOWS_VERSION retver;
VERSION_Init();
if (versionForced) /* user has overridden any sensible checks */
winver = defaultWinVersion;
else

View File

@ -350,7 +350,8 @@ HANDLE DEVICE_Open( LPCSTR filename, DWORD access, LPSECURITY_ATTRIBUTES sa )
if (!strncasecmp( info->name, filename, strlen(info->name) ))
return FILE_CreateDevice( info->id | 0x10000, access, sa );
FIXME( "Unknown/unsupported VxD %s. Try --winver nt40 or win31 !\n", filename);
FIXME( "Unknown/unsupported VxD %s. Try setting Windows version to 'nt40' or 'win31'.\n",
filename);
SetLastError( ERROR_FILE_NOT_FOUND );
return 0;
}