[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Not all overlays appear on Windows 7 with TSVN 1.6.7+

From: Adrian Buehlmann <adrian_at_cadifra.com>
Date: Fri, 12 Mar 2010 14:16:18 +0100

On 11.03.2010 20:02, Stefan Küng wrote:
> On 11.03.2010 01:06, Adrian Buehlmann wrote:
>> On 10.03.2010 20:08, Valik wrote:
>>> On Mar 9, 3:00 pm, Stefan Küng<tortoise..._at_gmail.com> wrote:
>>>> I've increased the limit.
>>>> Try the next nightly build.
>>>>
>>>> Stefan
>>>
>>> The ignored icon now works, of course. I still don't understand why
>>> you didn't increase the limit to 12. You're basically saying Windows
>>> 7 can never show the unversioned overlay. That still doesn't add up:
>>> * 9 TSVN (registered)
>>> * 3 Windows (registered)
>>> * 2 hidden (Shortcut, UAC shield)
>>> * 1 reserved due to compatibility (According to your previous
>>> comment)
>>>
>>> That's still just 15 which the TSVN documentation claims is the
>>> maximum.
>>
>> I can confirm that the unversioned overlay still doesn't work with
>> TortoiseOverlays 1.0.14 on Windows 7 (I tested on Ultimate x64). I
>> shamelessly took the merge modules of TortoiseOverlays 1.0.14 for the
>> stable branch of TortoiseHg [1] (this will be released with TortoiseHg
>> 1.0.1, which is due on April 1st). Current TortoiseHg 1.0 [2] ships with
>> TortoiseOverlays 1.0.13 (thanks again to Stefan for the nice GUID fix in
>> the TortoiseOverlays 1.0.13 merge modules!).
>
> Try the 1.0.15 version.
> The next nightly build of TSVN will use that version and it should then
> show all overlays.

Thanks.

I tried that (I built our TortoiseHg installer using 1.0.15 and tested
that). But, no, it doesn't. Unfortunately.

When using TortoiseOverlays (TO) 1.0.15 on a clean install of Win 7
Ultimate x64 or Vista x64 Ultimate SP2, the unversioned handler as
installed by TO is not initialized for 64-bit processes. 32-bit
processes on both of these platforms show the unversioned icon (Question
mark) fine.

>> For TortoiseHg we use the 'normal', 'added', 'modified' and
>> 'unversioned' overlays (use of 'conflict' is planned).
>>
>>> If you are absolutely 100% sure you can't bump the overlay count to 12
>>> for Windows 7 then maybe you should consider giving Windows 7 users a
>>> choice during installation. I would gladly allow the TSVN installer
>>> to remove any of Offline Files, SharingPrivate or EnhancedStorage if
>>> it is necessary for TSVN to display all it's overlays. I do not use
>>> any of those overlays but I do use TSVN's. I think many other Windows
>>> 7 users would agree.
>>
>> Disabling Offline Files, SharingPrivate and EnhancedStorage on Windows 7
>> on install sounds like a good plan (maybe these could be disabled with
>> the same method used by the autoruns tool from sysinternals - instead of
>> outright removing them).
>
> I don't think we should mess with other apps/features and disable them.
> If uses want to do that, they can do it themselves.
> I wouldn't like it either if another app would offer to disable
> something in TSVN.

I guess we already do mess with other apps or Windows itself. The pure
act of installing registry entries in

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers

seems to influence on other apps.

I found the following:

After the 64-bit TortoiseOverlays 1.0.15 is installed, I see the
following entries under the above mentioned registry key (in regedit):

EnhancedStorageShell {D9144DCD-E998-4ECA-AB6A-DCD83CCBA16D}
Offline Files {4E77131D-3629-431c-9818-C5679DC83E81}
SharingPrivate {08244EE6-92F0-47f2-9FC9-929BAA2E7235}
TortoiseAdded {C5994566-53D9-4125-87C9-F193FC689CB2}
TortoiseConflict {C5994562-53D9-4125-87C9-F193FC689CB2}
TortoiseDeleted {C5994565-53D9-4125-87C9-F193FC689CB2}
TortoiseIgnored {C5994567-53D9-4125-87C9-F193FC689CB2}
TortoiseLocked {C5994563-53D9-4125-87C9-F193FC689CB2}
TortoiseModified {C5994561-53D9-4125-87C9-F193FC689CB2}
TortoiseNormal {C5994560-53D9-4125-87C9-F193FC689CB2}
TortoiseReadOnly {C5994564-53D9-4125-87C9-F193FC689CB2}
TortoiseUnversioned {C5994568-53D9-4125-87C9-F193FC689CB2}

Regedit lists these entries in that order, so I asked myself if it could
be a problem that the TortoiseUnversioned handler is the last one in the
list. Most interestingly, the MS Windows preinstalled entries
(EnhancedStorageShell, Offline Files and SharingPrivate) happen to
appear *before* the Tortoise entries, due to the alphabetic sorting.

So I tested editing the registry be renaming the Tortoise entries to
insert a "0" (zero char) before the "Tortoise", which lead to the
following entries in regedit (in that order):

0TortoiseAdded {C5994566-53D9-4125-87C9-F193FC689CB2}
0TortoiseConflict {C5994562-53D9-4125-87C9-F193FC689CB2}
0TortoiseDeleted {C5994565-53D9-4125-87C9-F193FC689CB2}
0TortoiseIgnored {C5994567-53D9-4125-87C9-F193FC689CB2}
0TortoiseLocked {C5994563-53D9-4125-87C9-F193FC689CB2}
0TortoiseModified {C5994561-53D9-4125-87C9-F193FC689CB2}
0TortoiseNormal {C5994560-53D9-4125-87C9-F193FC689CB2}
0TortoiseReadOnly {C5994564-53D9-4125-87C9-F193FC689CB2}
0TortoiseUnversioned {C5994568-53D9-4125-87C9-F193FC689CB2}
EnhancedStorageShell {D9144DCD-E998-4ECA-AB6A-DCD83CCBA16D}
Offline Files {4E77131D-3629-431c-9818-C5679DC83E81}
SharingPrivate {08244EE6-92F0-47f2-9FC9-929BAA2E7235}

Guess what: after logoff/login, the unversioned icon worked in 64-bit
processes!

So, I bet (unproven claims):

(1) The ordering of the entries in
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
is relevant
(2) The entries are loaded in alphabetic order
(3) Entries that exceed a limit of entries (whatever that is) are ignored

So if we use the name "TortoiseUnversioned" for the unversioned handler,
it will be the last one initialized by explorer (if at all) and thus the
first one of the Tortoise entries being ignored in case there are too
many entries.

And it looks like after installing TortoiseOverlays x64 on a Win 7 x64
Ultimate or Vista x64 Ultimate, there too many entries under
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers

The name used for the entries seems to be irrelevant -- setting ordering
aside.

On Windows 7 x86 the unversioned overlay -- as installed by
TortoiseOverlays x86 version 1.0.15 -- works fine, since it installs its
keys under
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
using the following
names (complete listing of the entries found below that registry key):

1TortoiseNormal
2TortoiseModified
3TortoiseConflict
4TortoiseLocked
5TortoiseReadOnly
6TortoiseDeleted
7TortoiseAdded
8TortoiseIgnored
9TortoiseUnversioned
EnhancedStorageShell
Offline Files
SharingPrivate

So there, it seems we have an ordering that happens to be favorable for us.

Is there any specific reason for using different names in
TortoiseOverlays x64 (compared to the ones used in TortoiseOverlays x86) ?

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=2458681

To unsubscribe from this discussion, e-mail: [dev-unsubscribe_at_tortoisesvn.tigris.org].
Received on 2010-03-12 14:26:44 CET

This is an archived mail posted to the TortoiseSVN Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.