Jump to content

Explorer Integration Not Working For Me


Recommended Posts

For other developers at my site who have this installed the windows shell integration works beautifully. For myself and a few others it does not. I'm at a loss as to how to troubleshoot it. No matter where I am (whether it be browsing workspaces or not) I don't see the "Plastic SCM" submenu for a right click. I also don't see folder icons for workspaces. I have done a full re-install but no luck.

Any clue as to where to start looking?

Link to comment
Share on other sites

Hi carpediemvive,

Can you tell us your machine environment, OS version and Service Pack?

Obviously, but do you have the ShellExtension check box enabled at the installation time?

Can you also tell us if the installer reboots the explorer process at the end of the installation?

Regards,

manu

Link to comment
Share on other sites

Hi carpediemevive,

thanks for the info.

I'm going to send you an email with a couple of tools to perform the shell extension installation manually.

First, open a command line window as Administrator.

Run the following to unregister the ShellExtension:

C:\Tools\lockdetector.exe "C:\YourPlasticSCMInstallDir\client" "C:\YourPlasticSCMInstallDir\server"

C:\Tools\RegisterExtensionDotNet20_x64.exe -u C:\YourPlasticSCMInstallDir\client\shellextension.dll

C:\Tools\RestartExplorer.exe

Then we have to register it again:

C:\Tools\lockdetector.exe "C:\YourPlasticSCMInstallDir\client" "C:\YourPlasticSCMInstallDir\server"

C:\Tools\RegisterExtensionDotNet20_x64.exe -i C:\YourPlasticSCMInstallDir\client\shellextension.dll

C:\Tools\RestartExplorer.exe

Use the "RegisterExtensionDotNet20_x64.exe" or the "RegisterExtension.exe" depending if your machine is x64 or x86.

Tell me the RegisterExtension output.

Regards,

Manu

Link to comment
Share on other sites

It appears as though something is wrong with my shellextension.dll file. Here is the output of the two RegisterExtension commands:

>c:\tools\RegisterExtension.exe -u "C:\Program Files\PlasticSCM4\client\shellextension.dll"

COM Interop unregisteration of assembly failed!System.BadImageFormatException: The format of the file 'shellextension.dll' is invalid.

File name: "shellextension.dll"

at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Boolean isStringized, Evidence assemblySecurity, Boolean throwOnFileNotFound, Assembly locationHint, StackCrawlMark& stackMark)

at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Boolean stringized, Evidence assemblySecurity, StackCrawlMark& stackMark)

at System.Reflection.Assembly.LoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm)

at RegisterExtension.Class1.UnRegasmAssembly(String assembly)

Fusion log follows:

=== Pre-bind state information ===

LOG: Where-ref bind. Location = C:\Program Files\PlasticSCM4\client\shellextension.dll

LOG: Appbase = c:\tools\

LOG: Initial PrivatePath = NULL

Calling assembly : (Unknown).

===

LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).

LOG: Attempting download of new URL file:///C:/Program Files/PlasticSCM4/client/shellextension.dll.

>c:\tools\RegisterExtension.exe -i "c:\Program Files\PlasticSCM4\client\shellextension.dll"

Running as : 32-bit

Processing file : c:\Program Files\PlasticSCM4\client\shellextension.dll

COM Interop registeration of assembly failed!System.BadImageFormatException: The format of the file 'shellextension.dll' is invalid.

File name: "shellextension.dll"

at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Boolean isStringized, Evidence assemblySecurity, Boolean throwOnFileNotFound, Assembly locationHint, StackCrawlMark& stackMark)

at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Boolean stringized, Evidence assemblySecurity, StackCrawlMark& stackMark)

at System.Reflection.Assembly.LoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm)

at RegisterExtension.Class1.RegasmAssembly(String assembly)

Fusion log follows:

=== Pre-bind state information ===

LOG: Where-ref bind. Location = c:\Program Files\PlasticSCM4\client\shellextension.dll

LOG: Appbase = c:\tools\

LOG: Initial PrivatePath = NULL

Calling assembly : (Unknown).

===

LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).

LOG: Attempting download of new URL file:///c:/Program Files/PlasticSCM4/client/shellextension.dll.

I'm going to redownload the installer and run it again see if that works for me.

Link to comment
Share on other sites

The thing seems related to the following:

- Do you have a 64bits OS??

- Or is it a 64 bits OS but running Explorer on 32 bits??

Check whether explorer is running on 32 or 64. The issue must be related to this.

It is easy to fix (you can do it saying how the assemblies should be run, a simple command) but we need to understand why it is not working by default.

Link to comment
Share on other sites

I went to http://support.microsoft.com/kb/827218 to double check myself and under system properties (Method 1) I see "Microsoft Windows XP Professional Version 2002 Service Pack 3" which to me would indicate 32.

Then system information (Method 2) shows my process as "x86 Family 6 Model 23 Stepping 10 Genuineintel ~2925 Mhz" which would also indicate 32 bits.

I am with you it would seem a 32 vs 64 bit problem, but I just can't see 64 bit anywhere.

Just for the fun of it, I tried to run the 64 bit to register the DLL and that didn't work either. It gave me the following error:

c:\tools\RegisterExtensionDotNet20_x64.exe is not a valid Win32 application.
Link to comment
Share on other sites

I did copy and paste the error, not sure where the misspell happened. I ran a dumpbin from visual studio on the DLL and this is the output from the File Headers portion:

Microsoft (R) COFF/PE Dumper Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

Dump of file shellextension_bad.dll
PE signature found
File Type: DLL
FILE HEADER VALUES
		 14C machine (x86)
		   3 number of sections
    4ED4B5F6 time date stamp Tue Nov 29 05:37:42 2011
		   0 file pointer to symbol table
		   0 number of symbols
		  E0 size of optional header
	    2102 characteristics
			   Executable
			   32 bit word machine
			   DLL

To my understanding, based on the first line of file header values, this would be a 32 bit DLL.

Link to comment
Share on other sites

I opened up the DLL in a hex editor and walked my way through the structures and it does appear that I'm seeing the ox014c value showing me this is a 32 bit DLL. I compared it with another DLL that I made and use as a library and the headers match and both show that 0x014c value for 32 bit DLLs.

Link to comment
Share on other sites

Then I'm a little bit lost here.

You're on a 32 bits Windows XP, SP3. You know, is a rather old beast but I don't think there's a reason why it shouldn't work.

Part of my team is out on vacation today.

What if you reach me by email and we schedule a session on Monday? Email me to psantosl at codicesoftware.com

Link to comment
Share on other sites

  • 2 months later...

I finally fixed this!!

Sorry for the post on such an old topic, but I decided to poke around on this for a while and figured out what was going on. For some reason it was attempting to do the binding using my .NET 1.0 installation instead of the 2.0 installation. During installation I removed the 1.0 and 1.1 folders from C:\WINDOWS\.NET\Framework and it worked beautifully. I then put them back and the integration seems to work just fine now. Finally put this one to rest.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...