New version of the "Registry" package

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

New version of the "Registry" package

Joachim Geidel
I have published a new version of the "Registry" package to the Cincom
Public Store Repository. Compared with version 25 which comes with
VisualWorks 7.7, it changes four things:

- The namespace "Registry" has been renamed to "Win32Registry" to avoid
naming conflicts with Store.Registry.

- The package now uses the Unicode functions of the Windows Advanced API
instead of the ANSI functions which were used before.

- The method Key>>closeNow has been renamed to Key>>flushAndClose and now
actually closes the registry key (MSDN says that flushing does not close the
key). Key>>closeNow only flushed the registry, but didn't close it.
Key>>closeNow still exists, delegates to flushAndClose, and is marked as
deprecated.

- Several private methods of Win32API with names ending in with:with:with:*
have been renamed to match the names of the corresponding methods of
Win32SystemSupport where possible, and their parameter names have been
changed to match the names used in the current Advanced API documentation at
MSDN.

So far, the new version is blessed as "Work in Progress" and has a non-trunc
name, because it has not yet been intensively tested. I have developed and
tested with VW 7.7 NC on Mac OS X 10.6 and Windows XP SP 3 only, and do not
yet know if there are any incompatibilities with VW 7.6.

The new package versions are:
    Registry 27 + Unicode
    RegistryTests 10 + Unicode

I would appreciate if users of the Registry package could spare some minutes
to test if their software works with the new version. Please let me know of
the results. In the meantime, I will check if it is compatible with other
releases of VisualWorks, and maybe add some more test cases.

Best regards,
Joachim Geidel


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: New version of the "Registry" package

Joachim Geidel
I have updated Registry again. It should now be compatible with VisualWorks
7.6 and earlier (I have tested it with 7.6 only). I had used two methods
introduced with VW 7.7 which I have replaced. The version is
    Registry 27 + Unicode.1
It's still blessed as work in progress.

Best regards,
Joachim Geidel

Am 14.02.10 14:07 schrieb Joachim Geidel:

> I have published a new version of the "Registry" package to the Cincom
> Public Store Repository. Compared with version 25 which comes with
> VisualWorks 7.7, it changes four things:
>
> - The namespace "Registry" has been renamed to "Win32Registry" to avoid
> naming conflicts with Store.Registry.
>
> - The package now uses the Unicode functions of the Windows Advanced API
> instead of the ANSI functions which were used before.
>
> - The method Key>>closeNow has been renamed to Key>>flushAndClose and now
> actually closes the registry key (MSDN says that flushing does not close the
> key). Key>>closeNow only flushed the registry, but didn't close it.
> Key>>closeNow still exists, delegates to flushAndClose, and is marked as
> deprecated.
>
> - Several private methods of Win32API with names ending in with:with:with:*
> have been renamed to match the names of the corresponding methods of
> Win32SystemSupport where possible, and their parameter names have been
> changed to match the names used in the current Advanced API documentation at
> MSDN.
>
> So far, the new version is blessed as "Work in Progress" and has a non-trunc
> name, because it has not yet been intensively tested. I have developed and
> tested with VW 7.7 NC on Mac OS X 10.6 and Windows XP SP 3 only, and do not
> yet know if there are any incompatibilities with VW 7.6.
>
> The new package versions are:
>     Registry 27 + Unicode
>     RegistryTests 10 + Unicode
>
> I would appreciate if users of the Registry package could spare some minutes
> to test if their software works with the new version. Please let me know of
> the results. In the meantime, I will check if it is compatible with other
> releases of VisualWorks, and maybe add some more test cases.
>
> Best regards,
> Joachim Geidel
>
>
> _______________________________________________
> vwnc mailing list
> [hidden email]
> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: New version of the "Registry" package

Terry Raymond
Joachim

What improvements should we see for vw 7.6?

Terry
 
===========================================================
Terry Raymond
Crafted Smalltalk
80 Lazywood Ln.
Tiverton, RI  02878
(401) 624-4517      [hidden email]
<http://www.craftedsmalltalk.com>
===========================================================

> -----Original Message-----
> From: [hidden email] [mailto:[hidden email]] On Behalf Of Joachim Geidel
> Sent: Monday, February 15, 2010 3:05 PM
> To: VWNC List
> Subject: Re: [vwnc] New version of the "Registry" package
>
> I have updated Registry again. It should now be compatible with VisualWorks
> 7.6 and earlier (I have tested it with 7.6 only). I had used two methods
> introduced with VW 7.7 which I have replaced. The version is
>     Registry 27 + Unicode.1
> It's still blessed as work in progress.
>
> Best regards,
> Joachim Geidel
>
> Am 14.02.10 14:07 schrieb Joachim Geidel:
>
> > I have published a new version of the "Registry" package to the Cincom
> > Public Store Repository. Compared with version 25 which comes with
> > VisualWorks 7.7, it changes four things:
> >
> > - The namespace "Registry" has been renamed to "Win32Registry" to avoid
> > naming conflicts with Store.Registry.
> >
> > - The package now uses the Unicode functions of the Windows Advanced API
> > instead of the ANSI functions which were used before.
> >
> > - The method Key>>closeNow has been renamed to Key>>flushAndClose and now
> > actually closes the registry key (MSDN says that flushing does not close the
> > key). Key>>closeNow only flushed the registry, but didn't close it.
> > Key>>closeNow still exists, delegates to flushAndClose, and is marked as
> > deprecated.
> >
> > - Several private methods of Win32API with names ending in with:with:with:*
> > have been renamed to match the names of the corresponding methods of
> > Win32SystemSupport where possible, and their parameter names have been
> > changed to match the names used in the current Advanced API documentation at
> > MSDN.
> >
> > So far, the new version is blessed as "Work in Progress" and has a non-trunc
> > name, because it has not yet been intensively tested. I have developed and
> > tested with VW 7.7 NC on Mac OS X 10.6 and Windows XP SP 3 only, and do not
> > yet know if there are any incompatibilities with VW 7.6.
> >
> > The new package versions are:
> >     Registry 27 + Unicode
> >     RegistryTests 10 + Unicode
> >
> > I would appreciate if users of the Registry package could spare some minutes
> > to test if their software works with the new version. Please let me know of
> > the results. In the meantime, I will check if it is compatible with other
> > releases of VisualWorks, and maybe add some more test cases.
> >
> > Best regards,
> > Joachim Geidel
> >
> >
> > _______________________________________________
> > vwnc mailing list
> > [hidden email]
> > http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
>
>
> _______________________________________________
> vwnc mailing list
> [hidden email]
> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: New version of the "Registry" package

Joachim Geidel
Terry,

> What improvements should we see for vw 7.6?

The difference between the version I published yesterday and the previous
work in progress version is that it actually works in VW 7.6. ;-)

There are three main differences between the version of Registry distributed
with VW 7.6 (version 23 if I am not mistaken) and the new version.

The first was introduced with version 24 which is included in VW 7.7. It's a
bug fix which ensures that non-null terminated strings can be read correctly
from the registry (the last character of such strings was truncated when
using Registry 23).

The latest version adds two more changes. One is the renaming of the
namespace Registry to Win32Registry. This avoids occasional problems where a
reference to Registry was erroneously resolved as Store.Registry in Code
using the Registry package, or as the Registry namespace in Store code. I
encountered this problem when loading a new version of an already loaded
package with Store extensions into an image where the Registry package was
loaded.

The second difference is that Registry used the ANSI functions of the
Windows Advanced API (advapi.dll) for accessing the registry, and the new
version uses the Unicode versions of these functions. Using the ANSI
functions means that one can't use two-byte strings as names for registry
keys and values, and that strings stored in the registry are restricted to
one-byte strings, too. Also, the length of value names is restricted to 260
bytes when using ANSI functions on Windows 2000, while they can have up to
16,363 characters when using Unicode (on XP, Vista and Windows 7, there is
no such difference).

Apart from this, there is no new functionality in the new version. It does
not offer the whole range of registry functions, e.g. the functions which
associate registry access with transactions or which deal with registry
reflection. It also does not really offer support for using security
attributes, volatility options and class types etc. Is there a need for
adding more functionality?

Joachim Geidel


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: New version of the "Registry" package

Steven Kelly
In reply to this post by Joachim Geidel
IIRC someone commented that the class name shouldn't contain "32" if the
code isn't limited to 32-bit Windows. Admittedly testing that it would
work on 64-bit Windows is hard without a VM :-).

Steve

> -----Original Message-----
> From: [hidden email] [mailto:[hidden email]] On
> Behalf Of Joachim Geidel
> Sent: 15 February 2010 22:05
> To: VWNC List
> Subject: Re: [vwnc] New version of the "Registry" package
>
> I have updated Registry again. It should now be compatible with
> VisualWorks
> 7.6 and earlier (I have tested it with 7.6 only). I had used two
> methods
> introduced with VW 7.7 which I have replaced. The version is
>     Registry 27 + Unicode.1
> It's still blessed as work in progress.
>
> Best regards,
> Joachim Geidel
>
> Am 14.02.10 14:07 schrieb Joachim Geidel:
>
> > I have published a new version of the "Registry" package to the
> Cincom
> > Public Store Repository. Compared with version 25 which comes with
> > VisualWorks 7.7, it changes four things:
> >
> > - The namespace "Registry" has been renamed to "Win32Registry" to
> avoid
> > naming conflicts with Store.Registry.
> >
> > - The package now uses the Unicode functions of the Windows Advanced
> API
> > instead of the ANSI functions which were used before.
> >
> > - The method Key>>closeNow has been renamed to Key>>flushAndClose
and
> now
> > actually closes the registry key (MSDN says that flushing does not
> close the
> > key). Key>>closeNow only flushed the registry, but didn't close it.
> > Key>>closeNow still exists, delegates to flushAndClose, and is
marked

> as
> > deprecated.
> >
> > - Several private methods of Win32API with names ending in
> with:with:with:*
> > have been renamed to match the names of the corresponding methods of
> > Win32SystemSupport where possible, and their parameter names have
> been
> > changed to match the names used in the current Advanced API
> documentation at
> > MSDN.
> >
> > So far, the new version is blessed as "Work in Progress" and has a
> non-trunc
> > name, because it has not yet been intensively tested. I have
> developed and
> > tested with VW 7.7 NC on Mac OS X 10.6 and Windows XP SP 3 only, and
> do not
> > yet know if there are any incompatibilities with VW 7.6.
> >
> > The new package versions are:
> >     Registry 27 + Unicode
> >     RegistryTests 10 + Unicode
> >
> > I would appreciate if users of the Registry package could spare some
> minutes
> > to test if their software works with the new version. Please let me
> know of
> > the results. In the meantime, I will check if it is compatible with
> other
> > releases of VisualWorks, and maybe add some more test cases.
> >
> > Best regards,
> > Joachim Geidel
> >
> >
> > _______________________________________________
> > vwnc mailing list
> > [hidden email]
> > http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
>
>
> _______________________________________________
> vwnc mailing list
> [hidden email]
> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: New version of the "Registry" package

Joachim Geidel
In reply to this post by Joachim Geidel
> ----- Ursprüngliche Nachricht -----
> Von: Steven Kelly
> Gesendet: 16.02.10 10:28 Uhr
> An: VWNC List
> Betreff: Re: [vwnc] New version of the "Registry" package
>
> IIRC someone commented that the class name shouldn't contain "32" if the
> code isn't limited to 32-bit Windows. Admittedly testing that it would
> work on 64-bit Windows is hard without a VM :-).
>
> Steve

I saw Thomas Brodt's message only after renaming the namespace. I'll change
the name of the namespace and of the Win32* classes. I have to publish the
package again with a trunk version name anyway.

Concerning 64-bit Windows support, there are complicated things going on in
the Windows registry:

"On 64-bit Windows, portions of the registry entries are stored separately
for 32-bit application [sic] and 64-bit applications and mapped into
separate logical registry views using the registry redirector and registry
reflection, because the 64-bit version of an application may use different
registry keys and values than the 32-bit version."
Source: http://msdn.microsoft.com/en-us/library/ms724072(VS.85).aspx

The Registry package does not (yet) support the special functions of the
Advanced API for explicitly dealing with redirection and registry
reflection, which IMO means that it does not yet fully support 64-bit
Windows. OTOH, if complete coverage of the registry API is the criterion,
the package does not even fully support 32-bit Windows. :-)

Joachim



_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: New version of the "Registry" package

Joachim Geidel
As requested by the overwhelming majority of those who answered my previous
messages about a new version of the Registry package, I have updated the
package again and renamed its namespace and all classes which had a name
starting with Win32.(*)

The new packages in the Public Store Repository are:
    Registry 28
    RegistryTests 11

Changes between version 25 which is distributed with VisualWorks 7.7 and 28:

- The ANSI functions of the Windows Advanced API for accessing the Windows
registry have been replaced by their corresponding Unicode functions. This
also means that Strings are now stored in the registry with UTF-16 encoding.

- Determining the concrete subclasses of Key and Value has been simplified.
Key is no longer a dependent of ObjectMemory, but registers with
SystemEventInterest.

- The namespace Registry and all classes named Win32* have been renamed to
WindowsRegistry*.

- Post-load and pre-unload actions have been cleaned up and corrected.
Recompilation of the WindowsRegistryAPI methods has been added as a
post-load action for VisualWorks 7.6 and earlier.

- The method Key>>closeNow has been renamed to Key>>flushAndClose and now
actually closes the registry key. Key>>closeNow only flushed the registry,
but didn't close it (MSDN says that flushing does not close the
key). Key>>closeNow still exists and delegates to flushAndClose.

- Several private methods of Win32API/WindowsRegistryAPI with names ending
in with:with:with:* have been renamed to match the names of the
corresponding methods of Win32SystemSupport where possible, and their
parameter names have been changed to match the names used in the current
Advanced API documentation at MSDN.

- Some comment changes and cosmetic code cleanup to reduce the number of
Code Critic warnings.

Best regards,
Joachim Geidel

----
(*) 2 out of 3, not counting Travis as a user. ;-)


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc