Page 1 of 1

Exult broken on Vista and Windows 7;

Posted: Sat Aug 15, 2009 2:06 pm
by ShadowChaser
Exult has a number of serious compatibility bugs on Windows Vista and Windows 7 (and any Windows XP user who's not an administrator):

Assuming the game is installed at C:\Program Files\Exult and that BG and SI are installed as subdirectories to Exult, the following files are written:

* Exult.cfg
* stderr.txt
* stdout.txt
* Save games
* The "gamedat" folder for each game

All of those file modifications will fail with an "access denied" error. Why? Applications are NOT permitted to write to C:\Program Files at runtime! This has been true since NT 4, but (ahem) buggy software kept writing to it. In Vista, Microsoft finally got fed up and blocked all writes by switching administrator users down to standard users.

What does this mean? Well, on Vista and 7 one of two things happens:
1) You need to run Exult in compatibility mode and "elevate" to administrator every time it's run. This is the equivalent of requiring the use of "sudo" to run Exult on Linux (which I doubt you require on that platform..?)

2) Vista detects Exult's bugs and redirects writes to a "compatibility" location. Do you see a directory at C:\Users\\AppData\Local\VirtualStore\Program Files\Exult ?

http://msdn.microsoft.com/en-us/library/bb963893.aspx

Here's what I'm proposing:
* Modify Exult to store "system" configuration in the common app data folder. This needs to use the "well known folder id" (not hardcoded path). For example, C:\ProgramData\Exult\exult.cfg or C:\Documents and Settings\All Users\Application Data\Exult (or maybe this should be a per-user configuration since it's preference based...?)

* Modify Exult to store save games and gamedat in the current user's app data folder on Windows \Application Data\Local Settings\Exult\SerpentIsle\GameDat (or whatever the per-user non-roaming app data folder points to..)

* Modify Exult to store save games and gamedat in the "saved games" folder on Windows >= 6.0 (Vista and 7). For example, C:\Users\\Saved Games\Exult\Serpent Isle\.

* Output stdout.txt and stderr.txt to the current user's app data folder on all versions. C:\Users\\AppData\Local\Exult\stdout.txt

* Create a branch for release 1.4 in svn

* Rip out half finished (or universally loathed) features like "smooth walking" (or whatever it's called) from the release branch until they can be stabalized/fixed to the point of users actually wanting to use them (sorry!)

* Ship the sucker. Exult's trunk has been going under feature creep for too long and it's high time a line in the sand was drawn and the release was shipped. Configure Exult by default for a "classic" experience - point scaling at 2x or 3x at the standard ratio, standard player movement. I'd hazard a guess most people want U7 to "feel" the same as it did 15 years ago.

I can make the changes, but quite frankly I've had three or four Pentagram patches sitting in the queue for *YEARS* now and not getting integrated. If the current project admins are not interested in continuing with the project, please hand over the reigns.

TIME TO SHIP 1.4!

Re: Exult broken on Vista and Windows 7;

Posted: Sat Aug 15, 2009 3:33 pm
by bmac2112
Since there are limited resources, I'd prefer to see them spend time enhancing actual features than trying to make it worthy of Windows logo certification. You'd have the same problem on DOSBOX if U7 was installed in Program Files, because it's U7 itself that writes to the install location, not DOSBOX. Running in compatibility mode is a reasonable solution.

Re: Exult broken on Vista and Windows 7;

Posted: Sat Aug 15, 2009 5:07 pm
by Dominus
I'd hardly consider this behavior as "broken". When you run Exult you mostly don't notice al these redirections that Windows does...
I'd say patch away and if someone sees fit it will be applied. As of when this will happen... who knows...
If you want to have a serios discussion about taking over the reigns or not applied patches, take it to the mailing lists as these are more likely to be read by all devs.

As for the original u7 experience I'd recommend Dosbox.

Re: Exult broken on Vista and Windows 7;

Posted: Sat Aug 15, 2009 8:33 pm
by ShadowChaser
Wasn't the whole point of Exult that it runs on modern platforms?

I just find it ironic that it doesn't support modern operating systems :-)

Windows has had standard user accounts with limited permissions since 1993 ;-)

Re: Exult broken on Vista and Windows 7;

Posted: Sat Aug 15, 2009 10:39 pm
by Dominus
It IS a flaw that's right but you can hardly claim that it doesn't run on modern platforms. At least I was able to run Exult on windows 7 and (after a lot of compile problems) on OS X and I'm sure it runs on linux, too. What you describe are, in my view, small flaws thst DON'T prevent a user to run Exult...

Re: Exult broken on Vista and Windows 7;

Posted: Sat Aug 15, 2009 10:42 pm
by Malignant Manor
I don't think being brazenly insulting is a good way to get things accomplished. Pentagram is a separate project. You post make you out to be an @!#$ so far.

Modify Exult to store save games and gamedat in the "saved games" folder on Windows >= 6.0 (Vista and 7). For example, C:\Users\\Saved Games\Exult\Serpent Isle\.
You can already setup the path per each game and mod. Forcing a directory is not a good idea.

it's high time a line in the sand was drawn and the release was shipped.
There is a serious lack of bug testing/reporting for the svn. One example is a game breaking bug that would have been triggered by anyone playing through the beginning of SI that was reported months after it was broken. There is currently pretty much only one developer that actively spends his time fixing bugs and expanding Exult.

Re: Exult broken on Vista and Windows 7;

Posted: Sun Aug 16, 2009 2:12 am
by Keldryn
Installing Exult to a folder outside of C:\Program Files solves the problem easily. I keep all of my games installed to c:\games\ anyway.

Also, a shortcut to exult.exe can be set to run as administrator automatically.

Re: Exult broken on Vista and Windows 7;

Posted: Mon Aug 17, 2009 10:00 am
by Tribun Dragon
So Microsoft created a folder that everyone should avoid because of stupid restrictions?

I can only say: Nice work, Flash.

Re: Exult broken on Vista and Windows 7;

Posted: Mon Aug 17, 2009 12:20 pm
by Tribun Dragon
I have to add that is also is ridiculously easy to just shut off the UAC in Windows 7. Then Exult behaves exactly as as did in XP.

Re: Exult broken on Vista and Windows 7;

Posted: Mon Aug 17, 2009 3:35 pm
by Where?
When running Exult or any game installed in Program Files and you aren't using an administrator account, you can still save games. But they aren't stored in the game's folder for saved games. So anyone can tell me where they're stored?

Re: Exult broken on Vista and Windows 7;

Posted: Mon Aug 17, 2009 3:42 pm
by Dominus
See Shadow Chaser's first post and there point 2)
C:\Users\\AppData\Local\VirtualStore\Program Files\Exult (or similar, depending on where you installed stuff)

Re: Exult broken on Vista and Windows 7;

Posted: Mon Aug 17, 2009 4:16 pm
by marzo
I can make the changes
Do them and post them to the patch tracker; I will take a look at it.
If the current project admins are not interested in continuing with the project, please hand over the reigns.
Saying things like that only tend to alienate the people whose help you are trying to elicit, as the reaction to your post quite clearly demonstrated. The snide comments are even worse, especially given that Exult works perfectly fine in Linux and Mac OS X, and even Windows Vista (as if anyone really cared) and Windows 7 if you don't install it to Program Files.
So Microsoft created a folder that everyone should avoid because of stupid restrictions?
The restrictions are hardly "stupid": they are, in fact, basically the same restrictions you have in /bin, /usr/bin and /usr/local/bin directories in *nix (and several others, in fact). That is: programs should not write user-dependent data (say, configuration) in those directories, and users without administrative privileges should not be able to write to these directories PERIOD. This is a step to improve security; Microsoft just did it over a decade too late, and everyone using Windows was already used to using accounts with admin privileges (and all programs were already assuming that). This change was the best (only?) good thing in Vista as far as I can tell.

Re: Exult broken on Vista and Windows 7;

Posted: Mon Aug 17, 2009 10:20 pm
by TDI
A little piece of advice: keep your games, standard apps and other data on a separate partition, preferably even a seperate drive than your operating system. Solves all kinds of problems and if worse comes to worse, you can flatten C:\ reinstall your OS and keep all your other stuff intact.

Except that which depends on the windows registry. But you can make a backup of that and restore it later.

Re: Exult broken on Vista and Windows 7;

Posted: Thu Aug 20, 2009 7:11 am
by nadir
While I find the tone of ShadowChaser's post absolutely abysmal and undeserved, I do think the points he makes are reasonable: applications should be well behaved in the environment.

ShadowChaser we are waiting for the patches to make Exult better behaved than you :)

Re: Exult broken on Vista and Windows 7;

Posted: Thu Aug 20, 2009 11:18 pm
by ShadowChaser
@Marzo, @All - sorry about the snide comments. I was feeling a mixture of excitement about wanting to help, frustration that I spent a few hours trying to get Exult to work on Windows 7, and frustrated that I had 2 or 3 other patches for Pentagram sitting in the queue for what seems like two years now.

Hopefully interested parties can work together on a roadmap for 1.4's release - it seems like it that release fluctuates between bugs being fixed and new unstable (or undesired) features being added :(

Re: Exult broken on Vista and Windows 7;

Posted: Thu Aug 20, 2009 11:19 pm
by ShadowChaser
One other question... should I move the rest of this discussion to the email list? I imagine the 'default' behavior should be figured out before implementation.

I'm advocating the use of the normal per-user/per-machine folders by default, but it seemed as though others disagree.

Re: Exult broken on Vista and Windows 7;

Posted: Fri Aug 21, 2009 1:54 am
by Wut?
Marzo: For an OS that no one cares about, there sure are many threads asking if Exult runs on it :/

Also, you would think that people would know better than to use an OS they don't care about:
http://upload.wikimedia.org/wikipedia/c ... _share.svg

Re: Exult broken on Vista and Windows 7;

Posted: Fri Aug 21, 2009 5:26 am
by Dominus
@wut: no one here really cares whether anyone really cares about Vista. Take this discussion elsewhere please.

@shadowchaser, I would suggest to take the detail discussion to the ML (just remember to sign up on it, due to the high spam volume in the past, it is signed up users only). Those that don't answer can usually considered as undecided but at least they have read your proposal :)
I'm myself undecided where stuff should go to. As for the cfg file, dosbox did solve the problem nicely in their latest release (0.73). Maybe this code can be recycled if you haven't done anything yet.

Re: Exult broken on Vista and Windows 7;

Posted: Tue Aug 25, 2009 7:56 am
by Dominus
@ShadowChaser, another thought I had on this subject:
exult.cfg should go into the userspace and exult should first look for it there. But everything else should be handled by the installer (if our installer supports this), and add the appropiate userspace or Windows savegames location to the exult.cfg it creates.
So Exult should only be patched to handle the exult.cfg location and then our installer should be patched.
Since the pre-compiled Windows snapshots come with the installer anyway this should take care of everyone.
People who compile the svn on their own should be able to handle this.

Another question in regard to what you wrote in your patch description, how did it happen that Windows 7 totally failed with the directory redirect on your machine? This is not normal behaviour and I wondered if you knew why this happened for you...

Re: Exult broken on Vista and Windows 7;

Posted: Tue Aug 25, 2009 9:34 am
by nadir
And if anyone wants to port the .ini code from Pentagram to Exult so we can kill that horrid XML configuration.....

Re: Exult broken on Vista and Windows 7;

Posted: Tue Aug 25, 2009 12:26 pm
by Dominus
Oooohhhh, I would like to have ini cfg file :)

Re: Exult broken on Vista and Windows 7;

Posted: Wed Aug 26, 2009 1:08 am
by ShadowChaser
@Dominus - not a bad idea, but any subsequent login would be missing the Exult.cfg file.

My thinking was that the patch would get Windows users up to speed for v1.4.X and that the configuration system could be overhauled (ie/ use Pentagram's system) at some point in the future (1.5x or whatever) - cleaned up and encapsulated a bit better.

Good point about Windows 7. I just checked, and launching exult.exe causes nothing to happen. The process immediately exits without an error message and no stderr.txt or stdout.txt files are written.

It appears as though the SDL is doing something Windows 7 is extremely unhappy about. Even the Windows AppVerifier failed to launch it or report back any results.

I've submitted two patches, one to fix an issue preventing Visual Studio from compiling Exult, and another to fix the game save file location. I haven't been able to get *any* activity from IRC or the tracker - the dev team is completely dark. Could someone please take a look? I'd really like to proceed fixing the other bugs I've posted.

Re: Exult broken on Vista and Windows 7;

Posted: Wed Aug 26, 2009 1:39 am
by ShadowChaser
Figured it out. I was using a combination of the published sound effects files and a trunk build - I believe this caused a CRC failure as Exult launched. I had worked around it my my specific SI and BG shortcuts by specifying --nocrc.

That's why double clicking exult.exe failed. I moved everything to Windows 7's "VirtualStore" directory, cleaned up the program files\exult directory, then fixed the shortcuts. Everything good without requiring elevation now - app compat is redirecting everything.

Still need to fix the underlying issues, but at least I don't need to elevate.