[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[DotGNU]PNET on Windows - ideas on registry structure, SDK and runtime

From: Maciek
Subject: [DotGNU]PNET on Windows - ideas on registry structure, SDK and runtime
Date: Wed, 21 Apr 2004 02:26:19 +0800
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.6) Gecko/20040113

Here are some of my ideas for the near future of PNet on Windows platform.

Registry structure

This is closely related to my future work on improving coremul.

At the moment, there's no mechanism for finding which PNet implementation to use when running assemblies. That's one problem; it should be also possible to figure out whether to use PNet, Mono or .NET if all those implementations are installed (including their different versions!) - I'll elaborate on this at a later time.

Let's start with standardising PNet's registry structure - I think registry would be the easiest method to manage different installations.

Here's an example of what I was thinking:

HKEY_LOCAL_MACHINE\Software\DotGNU\Portable.NET (key)
HKEY_LOCAL_MACHINE\Software\DotGNU\Portable.NET\PreferredVersion (string value, e.g. 0.6.2) HKEY_LOCAL_MACHINE\Software\DotGNU\Portable.NET\CurrentVersion (string value, e.g. 0.6.4)

HKEY_LOCAL_MACHINE\Software\DotGNU\Portable.NET\0.6.4 (key)
HKEY_LOCAL_MACHINE\Software\DotGNU\Portable.NET\0.6.4\InstallRoot (string val, e.g. "C:\Windows\Portable.NET\0.6.4")

HKEY_LOCAL_MACHINE\Software\DotGNU\Portable.NET\0.6.2 (key)
HKEY_LOCAL_MACHINE\Software\DotGNU\Portable.NET\0.6.2\InstallRoot (string val, e.g. "C:\Windows\Portable.NET\0.6.2")

CurrentVersion is set everytime PNet is installed with the official installer, as long as version being installed is newer than the latest existing version.

PreferredVersion is what the user chooses to use when running (double-clicking) .NET apps in Explorer. A simple GUI config can be written which allows the user to set their preferred PNet version.

CoreEmul operation:

_CorExeMain is called by app.exe
Read HKEY_LOCAL_MACHINE\Software\DotGNU\Portable.NET\PreferredVersion to v

If (v == NULL) Then:
        Read HKEY_LOCAL_MACHINE\Software\DotGNU\Portable.NET\\CurrentVersion to 

If (HKEY_LOCAL_MACHINE\Software\DotGNU\Portable.NET\\v exists) Then:
        Read HKEY_LOCAL_MACHINE\Software\DotGNUPortable.NET\\v\InstallRoot to 

        If ("path\bin\ilrun.exe" exists) Then:
                Execute path\bin\ilrun.exe app.exe

(this logic could also be used in clrwrap)

The user may also install PNet for themselves only, in which case HKEY_CURRENT_USER can also be used.

Portable.NET Runtime and SDK

I'd suggest splitting PNET for Windows into 2 packages: runtime and SDK. The runtime installer can be as small as 3MB (including SWF) and would be useful for those who don't want or can't download large files, or for software vendors who want to distribute and deploy their .NET applications at the lowest possible cost.

The runtime would be installed in C:\Windows\Portable.NET\x.x.x (where x.x.x is version no.)

The SDK package will include compilers, libraries and sources, as well as GNU sample programs and libraries (Qt#, GTK#, etc.). Easy to use HTML or CHM documentation will be included as well. Ideally the SDK will feature a Free IDE such as SharpDevelop.

The SDK on the other hand would be installed in C:\Program Files\Portable.NET SDK\x.x.x

What do you think? Does putting different versions of PNet into separate directories make sense?


Maciek Plewa

PS. I'll be changing my email address this week.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]