32-bit Shell Extension on Windows 7 x64

This forum is user-to-user based and not regularly monitored by IDM.
Please see the note at the top of this page on how to contact IDM.

32-bit Shell Extension on Windows 7 x64

Postby iX9 » Sat Mar 03, 2012 4:15 am

I am using Windows 7 x64 and two panel file manager "Altap Salamander" 32-bit (still no 64-bit version available).
With this combination, I dont have "Load in UltraCompare" entry in file context menu, even this entry exists in Windows Explorer.
I think, UC shell extension is 64-bit.
Is there any way to install 32-bit shell extension or whole UC 32-bit?
iX9
Newbie
 
Posts: 3
Joined: Sat Jan 21, 2012 8:04 am

Re: 32-bit Shell Extension on Windows 7 x64

Postby Mofi » Sat Mar 03, 2012 11:26 am

It should be possible. But I can't give you the definite solution because not having a computer running Windows x64.

I have tried once to help an UltraEdit user to integrate the 32-bit shell extension DLL of UltraEdit on Windows 7 x64, see Windows 64 shell integration? But that failed and I don't know if the user made a mistake or it was really not possible.

However, I give you some hints to manually install and register the 32-bit shell extension DLL of UltraCompare. Perhaps you have more success. The instructions below are for UltraCompare v8.20.



First, you need UC_ShellExt.dll additionally to already installed UC_ShellExt64.dll.

You have to find out where the MSI file is stored on your hard disk. During installation of UltraCompare the MSI file is extracted to a directory in

%USERPROFILE%\Local Settings\Application Data\Downloaded Installations\UltraCompare

Copy this path into address bar of Windows Explorer and hit key RETURN to open this directory. %USERPROFILE% references the value of environment variable USERPROFILE. The path part Local Settings\Application Data can be different on your computer depending on language of Windows.

You should see in this directory one or more directories with a unique identifier string like {E01D11FC-3852-46DA-8F5B-01345EC9066B}. If there are multiple directories, look on the date of the directories. The directory with the latest date is the directory containing the MSI file of last installed UltraCompare. In this directory there is UltraCompare.msi.

You need an application that can extract files from an MSI file. My favorite packer tool WinRAR and my favorite file manager Total Commander with the MSI packer plugin support that. If you don't have such a tool, here is an alternate solution using msiexec on command line of Windows. Run the command

msiexec /a "%USERPROFILE%\Local Settings\Application Data\Downloaded Installations\UltraCompare\{E01D11FC-3852-46DA-8F5B-01345EC9066B}\UltraCompare.msi" /qb TARGETDIR=C:\Temp\UC

Of course the full path of UltraCompare.msi can be different on your computer depending on which version of UC you have installed and which language your Windows has.

This command just extracts all program files of UltraCompare to directory C:\Temp\UC. The directory C:\Temp\UC must not already exist. It is created automatically by msiexec. You should have C:\Temp\UC\program files\IDM Computer Solutions\UltraCompare\UC_ShellExt.dll

Copy the file UC_ShellExt.dll into the program files directory of UltraCompare. And check the NTFS permissions of this file in the UltraCompare directory. It should have the same permissions as all other files in the directory.



Second, the 32-bit version of the DLL must be registered. I can't give you the exact registry values because I'm not able to test them on a Win7 x64. But copy following lines into a new ASCII text file, save the file for example with UC32ShellExt.reg and then double click on this file to import the data to your registry.

REGEDIT4

[HKEY_CURRENT_USER\Software\Classes\
Wow6432Node\*]

[HKEY_CURRENT_USER\Software\Classes\
Wow6432Node\*\shellex]

[HKEY_CURRENT_USER\Software\Classes\
Wow6432Node\*\shellex\ContextMenuHandlers\UltraCompare]
@="{C3B42C03-C1B7-4c1a-B384-BBAE19646333}"

[HKEY_CURRENT_USER\Software\Classes\
Wow6432Node\CLSID\{C3B42C03-C1B7-4c1a-B384-BBAE19646333}]

[HKEY_CURRENT_USER\Software\Classes\
Wow6432Node\CLSID\{C3B42C03-C1B7-4c1a-B384-BBAE19646333}\InProcServer32]
@="
C:\\Program Files (x86)\\IDM Computer Solutions\\UltraCompare\\UC_ShellExt.dll"
"ThreadingModel"="Apartment"

[HKEY_CURRENT_USER\Software\Classes\
Wow6432Node\Directory\shellex\ContextMenuHandlers\UltraCompare]
@="{C3B42C03-C1B7-4c1a-B384-BBAE19646333}



Please note that you probably need to adapt the path C:\\Program Files (x86)\\IDM Computer Solutions\\UltraCompare by the path of the UltraCompare program files directory containing now file UC_ShellExt.dll.

You maybe need to log off / log on (or restart Windows) to see the UltraCompare shell extension in context menu for all files and directories.
User avatar
Mofi
Grand Master
Grand Master
 
Posts: 4049
Joined: Thu Jul 29, 2004 11:00 pm
Location: Vienna

Re: 32-bit Shell Extension on Windows 7 x64

Postby iX9 » Mon Mar 05, 2012 3:59 am

Thank You very much! Succesfully done!

I used slightly different steps:

  • For current UC, there is no unofficial localization pack for my language, so I use 7.20.0.1007.
  • Unpack with WinRAR.
  • The .reg file above don't work for me (probably because of older version of UC), so I run command line (as Administrator) in UC's program directory and use command: regsvr32.exe UC_ShellExtE.dll, and got Succesfully registered message.
There was no need for restart PC, just the file manager.

:D :wink:
iX9
Newbie
 
Posts: 3
Joined: Sat Jan 21, 2012 8:04 am

Re: 32-bit Shell Extension on Windows 7 x64

Postby Mofi » Tue Mar 06, 2012 1:16 pm

Yes, there is a difference between shell extension of UC v7.20 and UC v8.20.

UC_ShellExtE.dll of UC v7.20 registers itself on Windows x86 (32-bit) with

[HKEY_CURRENT_USER\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\UltraCompare]
@="
{D39D9960-20CA-40CE-A802-8C64817BE518}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\
{D39D9960-20CA-40CE-A802-8C64817BE518}]
@="UCShellExt Class"

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\
{D39D9960-20CA-40CE-A802-8C64817BE518}\InprocServer32]
@="
C:\\Program Files\\IDM Computer Solutions\\UltraCompare\\UC_ShellExtE.dll"
"ThreadingModel"="Apartment"

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\
{D39D9960-20CA-40CE-A802-8C64817BE518}\Params]
@="Run Data"
"DataParam1"=""
"DataParam2"=""
"DataParam3"=""

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\
{D39D9960-20CA-40CE-A802-8C64817BE518}\ProgID]
@="UC_ShellExt.UCShellExt.1"

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\
{D39D9960-20CA-40CE-A802-8C64817BE518}\Programmable]

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\
{D39D9960-20CA-40CE-A802-8C64817BE518}\TypeLib]
@="{D3822C3D-45A0-44E9-91CA-019F9565D282}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\
{D39D9960-20CA-40CE-A802-8C64817BE518}\VersionIndependentProgID]
@="UC_ShellExt.UCShellExt"

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\shellex\ContextMenuHandlers\UltraCompare]
@="
{D39D9960-20CA-40CE-A802-8C64817BE518}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\UC_ShellExt.UCShellExt\CLSID]
@="
{D39D9960-20CA-40CE-A802-8C64817BE518}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\UC_ShellExt.UCShellExt\CurVer]
@="UC_ShellExt.UCShellExt.1"

[HKEY_CURRENT_USER\SOFTWARE\Classes\UC_ShellExt.UCShellExt.1]
@="UCShellExt Class"

[HKEY_CURRENT_USER\SOFTWARE\Classes\UC_ShellExt.UCShellExt.1\CLSID]
@="
{D39D9960-20CA-40CE-A802-8C64817BE518}"


I would be interested in the exact registry path used by regsvr32.exe for the 32-bit shell extension of UC v7.20.

Could you start Regedit, search with Ctrl+F for {D39D9960-20CA-40CE-A802-8C64817BE518} and post here the registry path.
User avatar
Mofi
Grand Master
Grand Master
 
Posts: 4049
Joined: Thu Jul 29, 2004 11:00 pm
Location: Vienna

Re: 32-bit Shell Extension on Windows 7 x64

Postby iX9 » Wed Mar 07, 2012 5:48 am

For HKCU, I found it here:

[HKEY_CURRENT_USER\Software\Classes\CLSID\{D39D9960-20CA-40CE-A802-8C64817BE518}]
@="UCShellExt Class"

[HKEY_CURRENT_USER\Software\Classes\CLSID\{D39D9960-20CA-40CE-A802-8C64817BE518}\InprocServer32]
@="C:\\Program Files (x86)\\UltraCompare\\UC_ShellExt07x64.dll"
"ThreadingModel"="Apartment"

[HKEY_CURRENT_USER\Software\Classes\CLSID\{D39D9960-20CA-40CE-A802-8C64817BE518}\Params]
@="Run Data"
"DataParam1"=""
"DataParam2"=""
"DataParam3"=""

[HKEY_CURRENT_USER\Software\Classes\CLSID\{D39D9960-20CA-40CE-A802-8C64817BE518}\ProgID]
@="UC_ShellExt.UCShellExt.1"

[HKEY_CURRENT_USER\Software\Classes\CLSID\{D39D9960-20CA-40CE-A802-8C64817BE518}\Programmable]

[HKEY_CURRENT_USER\Software\Classes\CLSID\{D39D9960-20CA-40CE-A802-8C64817BE518}\TypeLib]
@="{D3822C3D-45A0-44E9-91CA-019F9565D282}"

[HKEY_CURRENT_USER\Software\Classes\CLSID\{D39D9960-20CA-40CE-A802-8C64817BE518}\VersionIndependentProgID]
@="UC_ShellExt.UCShellExt"

[HKEY_CURRENT_USER\Software\Classes\UC_ShellExt.UCShellExt]
@="UCShellExt Class"

[HKEY_CURRENT_USER\Software\Classes\UC_ShellExt.UCShellExt\CLSID]
@="{D39D9960-20CA-40CE-A802-8C64817BE518}"

[HKEY_CURRENT_USER\Software\Classes\UC_ShellExt.UCShellExt\CurVer]
@="UC_ShellExt.UCShellExt.1"

[HKEY_CURRENT_USER\Software\Classes\UC_ShellExt.UCShellExt.1]
@="UCShellExt Class"

[HKEY_CURRENT_USER\Software\Classes\UC_ShellExt.UCShellExt.1\CLSID]
@="{D39D9960-20CA-40CE-A802-8C64817BE518}"



[HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID\{D39D9960-20CA-40CE-A802-8C64817BE518}]

[HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID\{D39D9960-20CA-40CE-A802-8C64817BE518}\Params]
"DataParam1"=""
"DataParam2"=""
"DataParam3"=""


(I don't have UC installed in default directory).
iX9
Newbie
 
Posts: 3
Joined: Sat Jan 21, 2012 8:04 am

Re: 32-bit Shell Extension on Windows 7 x64

Postby Mofi » Fri Mar 09, 2012 4:18 pm

Thanks. It is really interesting that just the registry path storing the files / directories to compare is created in Wow6432Node registry path.

But you wrote that you registered the 32-bit DLL as administrator. So I think the 32-bit UC_ShellExtE.dll is registered in hive HKEY_LOCAL_MACHINE
User avatar
Mofi
Grand Master
Grand Master
 
Posts: 4049
Joined: Thu Jul 29, 2004 11:00 pm
Location: Vienna


Return to UltraCompare General Discussion