<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>pathcopycopy Wiki &amp; Documentation Rss Feed</title><link>http://www.codeplex.com/pathcopycopy/Wiki/View.aspx?title=Home</link><description>pathcopycopy Wiki Rss Description</description><item><title>New Comment on "Network Administrator"</title><link>http://pathcopycopy.codeplex.com/wikipage?title=Network Administrator&amp;ANCHOR#C27005</link><description>ANetworkAdmin wrote&amp;#58;&amp;#10;A way to disable the autoupdate feature&amp;#63; This is more a feature request... As a network admin we don&amp;#39;t want these messages popping up on end user machines&amp;#63; i.e. an install switch that disables the autoupdate feature&amp;#63; Or a registry setting we can push to disable autoupdate notifications&amp;#63;&amp;#10;&amp;#10;ANSWER&amp;#58;&amp;#10;Yes, there is - &amp;#10;The value you&amp;#39;re looking for is named DisableSoftwareUpdate. It&amp;#39;s a DWORD value. Set a value of 1 to disable auto-updating. You can also push the registry setting via policy I guess. Place it in HKEY_LOCAL_MACHINE&amp;#92;Software&amp;#92;clechasseur&amp;#92;PathCopyCopy.</description><author>ANetworkAdmin</author><pubDate>Wed, 27 Mar 2013 14:09:16 GMT</pubDate><guid isPermaLink="false">New Comment on "Network Administrator" 20130327020916P</guid></item><item><title>New Comment on "Documentation"</title><link>http://pathcopycopy.codeplex.com/documentation?&amp;ANCHOR#C26988</link><description>Great job, thanks&amp;#33;  I was looking for code to write my own shell and ran across your project. Well done.  I haven&amp;#39;t done much C&amp;#43;&amp;#43;, I&amp;#39;m more of  a C&amp;#35; guy but I&amp;#39;ll look at your code.  Really, what I was attempting to do is the same concept, except a &amp;#34;Send as email...&amp;#34; option instead of copy.  Just a thought, if you&amp;#39;d like to implement that.  Again,  great job.  Thanks&amp;#33;</description><author>jrlopezp</author><pubDate>Tue, 26 Mar 2013 01:51:47 GMT</pubDate><guid isPermaLink="false">New Comment on "Documentation" 20130326015147A</guid></item><item><title>Updated Wiki: Developer</title><link>http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;version=25</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;&lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Developer"&gt;End-User&lt;/a&gt;  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Developer"&gt;Network Administrator&lt;/a&gt;  |  Developer&lt;/h5&gt;&lt;hr /&gt;
This subsection of the documentation is aimed at software developers interested in Path Copy Copy. It is divided into two parts: developers looking to build Path Copy Copy from source, and developers looking to create their own Path Copy Copy commands (also known as &lt;b&gt;plugins&lt;/b&gt;).&lt;br /&gt;
&lt;h2&gt;Getting the source&lt;/h2&gt;
Path Copy Copy uses &lt;b&gt;&lt;a href="http://mercurial.selenic.com/"&gt;Mercurial&lt;/a&gt;&lt;/b&gt; for its source control. For those of you not familiar with it, Mercurial is a distributed version control system - this means that each developer has a full copy of the repository on his/her machine. (&lt;a href="http://hginit.com/"&gt;HgInit&lt;/a&gt; might be a good place to start if you&amp;#39;re new to Mercurial.)&lt;br /&gt;&lt;br /&gt;There are two ways to get the source for Path Copy Copy in order to build it. The first one is to use a Mercurial client to &lt;b&gt;clone&lt;/b&gt; the Path Copy Copy repository. The clone URL to use is &lt;b&gt;https://hg01.codeplex.com/pathcopycopy&lt;/b&gt;. You can use any Mercurial client to do this. On Windows, &lt;a href="http://tortoisehg.bitbucket.org/"&gt;TortoiseHg&lt;/a&gt; is a popular graphical Mercurial client that works well.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297461" alt="Developer_GettingTheSource_CloneRepoTortoiseHg.png" title="Developer_GettingTheSource_CloneRepoTortoiseHg.png" /&gt;&lt;br /&gt;&lt;i&gt;Cloning the Path Copy Copy repository with TortoiseHg&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Once the clone operation completes, you can go in your chosen destination folder and see all Path Copy Copy project files.&lt;br /&gt;&lt;br /&gt;The second way to get the source is to download a pre-packaged revision. You can do so by going to the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/SourceControl/list/changesets"&gt;Source Code&lt;/a&gt;&lt;/b&gt; tab and click on the Download link just under &lt;b&gt;Latest Version&lt;/b&gt; on the right-hand side. After agreeing to the license, you will be able to download a complete version of the Path Copy Copy project files as a ZIP archive. Simply unzip it anywhere to be able to use it.&lt;br /&gt;&lt;br /&gt;Whatever mean you choose to get the source, once you have it, you should probably read the README.TXT in the root directory. This file is a quick list of most other files in the Path Copy Copy source tree and is aimed at developers to read.&lt;br /&gt;
&lt;h2&gt;Building the shell extension&lt;/h2&gt;
Path Copy Copy has been developed using &lt;b&gt;Microsoft Visual Studio&lt;/b&gt;. Although it might be possible to adapt the source to build it with another tool, it has never been attempted. Make sure you meet the minimum prerequisites listed on the right before you attempt to build any part of the source.&lt;br /&gt;&lt;br /&gt;Path Copy Copy is divided into two components, each with its own Visual Studio solution: the shell extension (responsible for adding the menu items in the shell&amp;#39;s contextual menu) and the settings application (launched with the user chooses &lt;i&gt;Settings&lt;/i&gt; in the menu - see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Developer"&gt;End-User tab&lt;/a&gt;). In order to build the shell extension, open the &lt;b&gt;PathCopyCopy.sln&lt;/b&gt; file.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297466" alt="Developer_BuildingShellExt_PathCopyCopySln.png" title="Developer_BuildingShellExt_PathCopyCopySln.png" /&gt;&lt;br /&gt;&lt;i&gt;The PathCopyCopy solution&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;This solution contains two projects: &lt;b&gt;PathCopyCopy&lt;/b&gt; and &lt;b&gt;TestPlugins&lt;/b&gt;. The second project simply contains plugin implementations used for testing purposes and are never shipped with Path Copy Copy. Thus, this project is out of the scope of this documentation. Feel free to examine it if you want.&lt;br /&gt;&lt;br /&gt;The Path Copy Copy shell extension is written in C++ and uses ATL. It is made of several different source files. Although this documentation won&amp;#39;t dig into the structure of the code itself, feel free to do so on your own if you want to learn how Path Copy Copy works (especially the &lt;i&gt;PathCopyCopyContextMenuExt&lt;/i&gt; class and the various &lt;i&gt;Plugins&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;The PathCopyCopy project has two configurations, &lt;b&gt;Debug&lt;/b&gt; and &lt;b&gt;Release&lt;/b&gt;, as well as two platforms, &lt;b&gt;Win32&lt;/b&gt; and &lt;b&gt;x64&lt;/b&gt;. The Debug configuration should only be needed if you intend to trace into the Path Copy Copy code, so most likely, you will want to select Release. Also, it is important that each version of Path Copy Copy is built in &lt;b&gt;32-bit&lt;/b&gt; (Win32 platform) and &lt;b&gt;64-bit&lt;/b&gt; (x64 platform) formats, so as to be able to run on any system.&lt;br /&gt;&lt;br /&gt;Once you are ready to build the shell extension, simply choose &lt;i&gt;Batch Build...&lt;/i&gt; under the Build menu, check both &lt;i&gt;Release|Win32&lt;/i&gt; and &lt;i&gt;Release|x64&lt;/i&gt; solution config of the PathCopyCopy project, and click &lt;b&gt;Build&lt;/b&gt;. Building should not take long depending on the speed of your computer.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297471" alt="Developer_BuildingShellExt_BatchBuilding.png" title="Developer_BuildingShellExt_BatchBuilding.png" /&gt;&lt;br /&gt;&lt;i&gt;Using Batch Build to build both versions of PathCopyCopy&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The output files, including the final &lt;b&gt;PathCopyCopy.dll&lt;/b&gt;, are written in the &lt;i&gt;bin&lt;/i&gt; directory under the root source directory. Object files will be in the &lt;i&gt;obj&lt;/i&gt; directory, next to bin. Note that the build mechanism will automatically &lt;i&gt;register&lt;/i&gt; the DLL, as the shell extension is a COM object.&lt;br /&gt;
&lt;h2&gt;Building the settings application&lt;/h2&gt;
When the user selects the &lt;i&gt;Settings...&lt;/i&gt; item in the Path Copy Copy submenu, the shell extension launches the &lt;b&gt;Settings application&lt;/b&gt; to let the user modify the options. This application has its own Visual Studio solution named &lt;b&gt;PathCopyCopySettings.sln&lt;/b&gt;. This solution contains a single project that is written in C# and targets .NET Framework 2.0.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297472" alt="Developer_BuildingSettingsApp_PathCopyCopySettingsSln.png" title="Developer_BuildingSettingsApp_PathCopyCopySettingsSln.png" /&gt;&lt;br /&gt;&lt;i&gt;The PathCopyCopySettings solution&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Settings project is a &lt;b&gt;Windows Forms&lt;/b&gt; project whose central source file is named &lt;b&gt;MainForm&lt;/b&gt;. The other source files contain code to deal with the user settings and plugins. Again, this documentation won&amp;#39;t dig into the code. Feel free to explorer if you want to see how settings are changed.&lt;br /&gt;&lt;br /&gt;The PathCopyCopySettings solution again has two configurations, &lt;b&gt;Debug&lt;/b&gt; and &lt;b&gt;Release&lt;/b&gt;, but a single platform named &lt;b&gt;AnyCPU&lt;/b&gt;. This is because a .NET application is platform-agnostic by default. In our case, it will run as a 32-bit application if the user is on a 32-bit system, and as a 64-bit application if on a 64-bit system. Again, the Debug configuration is only needed to trace in the code, so Release should be used in most circumstances.&lt;br /&gt;&lt;br /&gt;Once you are ready to build the settings application, select &lt;b&gt;Release&lt;/b&gt; from the configuration dropdown and &lt;b&gt;Build Solution&lt;/b&gt; from the &lt;i&gt;Build&lt;/i&gt; menu. The output and object files will be saved in the same place as the shell extension project&amp;#39;s, alongside those files. Please note that although the project is platform-agnostic, it is first built in &lt;b&gt;Win32&lt;/b&gt; and then a post-build step is used to copy it to &lt;b&gt;x64&lt;/b&gt; so that both versions of the shell extension will be successfully able to find the application. The application file is named &lt;b&gt;PathCopyCopySettings.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;After both projects have been built, Path Copy Copy should be ready to use. Since the COM object has been registered after building, simply right-clicking on a file or folder should show up the Path Copy Copy menu items.&lt;br /&gt;
&lt;h2&gt;Building the installer&lt;/h2&gt;
For those who may need to modify Path Copy Copy and redistribute the modified version, building the installer may be needed. Path Copy Copy&amp;#39;s setup has been built using the &lt;b&gt;&lt;a href="http://www.jrsoftware.org/isinfo.php"&gt;Inno Setup&lt;/a&gt;&lt;/b&gt; tool. In order to build the installer, make sure you have Inno Setup installed. You also need the Inno Setup Preprocessor, a free add-on. The simplest way to get it all in one package is to use the &lt;b&gt;QuickStart Pack&lt;/b&gt; (see the &lt;a href="http://www.jrsoftware.org/isdl.php"&gt;Inno Setup download page&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Building the Path Copy Copy setup is easy. Simply open the &lt;b&gt;Setup.iss&lt;/b&gt; file located in the &lt;i&gt;Installer&lt;/i&gt; directory under the root source directory and choose &lt;b&gt;Compile&lt;/b&gt; from the Inno Setup Compiler toolbar. (Note that if you installed InnoIDE using the QuickStart Pack, it will open instead of the Inno Setup Compiler. The same &lt;i&gt;Compile&lt;/i&gt; command exists in its toolbar, however, and works the same way.)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297572" alt="Developer_BuildingInstaller_CompilingIsc.png" title="Developer_BuildingInstaller_CompilingIsc.png" /&gt;&lt;br /&gt;&lt;i&gt;Compiling the Path Copy Copy setup using Inno Setup Compiler&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Once the compilation completes, go back to the &lt;i&gt;Installer&lt;/i&gt; directory and a new directory named &lt;b&gt;Output&lt;/b&gt; will have been created. It will contain the setup application, named &lt;b&gt;PathCopyCopy&lt;i&gt;VersionNumber&lt;/i&gt;.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;This concludes the documentation to build Path Copy Copy from source. Those of you wishing to develop custom plugins can continue to the next section.&lt;br /&gt;
&lt;h2&gt;Plugin development&lt;/h2&gt;
Path Copy Copy has been designed with a modular architecture. Each command seen in the contextual menu is called a &lt;b&gt;plugin&lt;/b&gt; internally. It is possible to create and distribute custom plugins in the form of &lt;b&gt;COM objects&lt;/b&gt; implementing custom Path Copy Copy interfaces. In this chapter, the sample C++ plugin project will be shown, but it should be possible to write custom plugins in any programming language using any environment, as long as it supports COM object development.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note&lt;/b&gt;: it is assumed here that you are familiar with the C++ language and the development of COM objects using the ATL library. Learning to do this is outside the scope of this documentation. Please refer to web tutorials for more information.&lt;br /&gt;&lt;br /&gt;Path Copy Copy ships with a sample Visual C++ project that implements a complete plugin. There are two places where it can be found:
&lt;ul&gt;&lt;li&gt;In Path Copy Copy&amp;#39;s installation directory, under &lt;i&gt;Samples\Plugins\COM\C++&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;In Path Copy Copy&amp;#39;s source tree, under &lt;i&gt;Samples\SampleCOMPluginCpp&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt;
The sample comes with a Visual Studio 2008 solution containing a single project, itself containing only one important class named &lt;b&gt;SamplePathCopyCopyPlugin&lt;/b&gt;. It also uses a file named &lt;b&gt;PathCopyCopy_i.h&lt;/b&gt; that is very important as it contains the definintions of Path Copy Copy&amp;#39;s custom interfaces.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297577" alt="Developer_PluginDevelopment_SampleCOMCppProject.png" title="Developer_PluginDevelopment_SampleCOMCppProject.png" /&gt;&lt;br /&gt;&lt;i&gt;The sample C++ COM plugin project&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Opening &lt;i&gt;SamplePathCopyCopyPlugin.h&lt;/i&gt; will display the declaration of the COM plugin class. In order to showcase them all, the class implements all three Path Copy Copy interfaces.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297726" alt="Developer_PluginDevelopment_SampleClassIntf.png" title="Developer_PluginDevelopment_SampleClassIntf.png" /&gt;&lt;br /&gt;&lt;i&gt;The sample plugin class&amp;#39; declaration with the Path Copy Copy interfaces&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;In order to be usable by Path Copy Copy, your plugin COM object needs to implement at least the &lt;b&gt;IPathCopyCopyPlugin&lt;/b&gt; interface. The other interfaces are optional and can be implemented only if needed.
&lt;h4&gt;IPathCopyCopyPlugin interface&lt;/h4&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// IPathCopyCopyPlugin interface&lt;/span&gt;
    STDMETHOD(get_Description)(BSTR *p_ppDescription);
    STDMETHOD(get_HelpText)(BSTR *p_ppHelpText);
    STDMETHOD(GetPath)(BSTR p_pPath, BSTR *p_ppNewPath);
&lt;/pre&gt;&lt;/div&gt;Base interface that is required for all Path Copy Copy plugins. In contains three methods:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;get_Description:&lt;/b&gt; Must return the plugin&amp;#39;s description string. Will be displayed in the contextual menu to identify the plugin.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get_HelpText:&lt;/b&gt; Can return a help text that will be shown in the shell&amp;#39;s status bar when the cursor hovers over the plugin&amp;#39;s contextual menu item. It is legal to return &lt;span class="codeInline"&gt;NULL&lt;/span&gt; or an empty string for this.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GetPath:&lt;/b&gt; Main work method invoked by Path Copy Copy when it needs to get the path for a particular file or folder. This method can be called repeatedly if the user selected a group of files. It receives the full path to the file as input and must return a path, modified as needed.&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;IPathCopyCopyPluginGroupInfo interface&lt;/h4&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// IPathCopyCopyPluginGroupInfo interface&lt;/span&gt;
    STDMETHOD(get_GroupId)(ULONG *p_pGroupId);
    STDMETHOD(get_GroupPosition)(ULONG *p_pPosition);
&lt;/pre&gt;&lt;/div&gt;Optional interface that can be implemented when working on a group of plugins so that they are kept next to each other in the contextual menu. If this interface is not implemented, all custom plugins end up in the same &amp;quot;group&amp;quot; in the menu. This interface allows plugins to group together and determine ordering. It contains two methods:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;get_GroupId:&lt;/b&gt; Must return the &lt;b&gt;group ID&lt;/b&gt; (see below) of the group of plugins to which this plugin belongs to. All plugins with the same group ID will appear in the same block in the contextual menu, surrounded by separators.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get_GroupPosition:&lt;/b&gt; Must return the zero-based position of the plugin within the group. Path Copy Copy will display plugins in ascending order of group position when displaying the group.&lt;/li&gt;&lt;/ul&gt;
Plugin groups are identified by an &lt;b&gt;ID&lt;/b&gt; that is a 32-bit unsigned integer. Since there is no real way to know which IDs are already in use, developers are encouraged to specify their group ID using a four-char code, like this:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    STDMETHODIMP MyPlugin::get_GroupId(ULONG *p_pGroupId)
    {
        *p_pGroupId = &amp;#39;MYGP&amp;#39;;
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; S_OK;
    }
&lt;/pre&gt;&lt;/div&gt;Furthermore, group IDs composed of all lowercase letters are considered &lt;b&gt;reserved&lt;/b&gt; for internal use.&lt;br /&gt;
&lt;h4&gt;IPathCopyCopyStateInfo interface&lt;/h4&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// IPathCopyCopyPluginStateInfo&lt;/span&gt;
    STDMETHOD(Enabled)(BSTR p_pParentPath, BSTR p_pFile, VARIANT_BOOL *p_pEnabled);
&lt;/pre&gt;&lt;/div&gt;Optional interface that allows a plugin to specify its state in the contextual menu. It contains a single method:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Enabled:&lt;/b&gt; Called when the contextual menu is built to know if the plugin&amp;#39;s entry should be enabled or not. The method receives two information to decide: the &lt;b&gt;path of a file&lt;/b&gt; that was selected by the user, and the &lt;b&gt;path of its parent directory&lt;/b&gt;. In order to be disabled, the method must return &lt;span class="codeInline"&gt;S_OK&lt;/span&gt; and set the &lt;span class="codeInline"&gt;VARIANT_BOOL&lt;/span&gt; parameter to &lt;span class="codeInline"&gt;VARIANT_FALSE&lt;/span&gt;; any other combination of results will leave the plugin enabled.&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;Plugin registration&lt;/h4&gt;
Once your plugin has been developed, it needs to be registered as a COM object as well as with Path Copy Copy. In order to do this, the Path Copy Copy contextual menu extension COM object includes two methods to &lt;b&gt;register&lt;/b&gt; and &lt;b&gt;unregister&lt;/b&gt; a plugin. One place to do this is in the &lt;i&gt;DllRegisterServer&lt;/i&gt; override of your ATL module.&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// In dllmain.h&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;class&lt;/span&gt; CMyModule : &lt;span style="color:Blue;"&gt;public&lt;/span&gt; CAtlDllModuleT&amp;lt; CMyModule &amp;gt;
    {
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; :
        DECLARE_LIBID(...)
        DECLARE_REGISTRY_APPID_RESOURCEID(...)

        HRESULT DllRegisterServer(BOOL bRegTypeLib = TRUE) &lt;span style="color:Blue;"&gt;throw&lt;/span&gt;();
        HRESULT DllUnregisterServer(BOOL bUnRegTypeLib = TRUE) &lt;span style="color:Blue;"&gt;throw&lt;/span&gt;();
    };
&lt;/pre&gt;&lt;/div&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// In dllmain.cpp&lt;/span&gt;
    HRESULT CMyModule::DllRegisterServer( BOOL bRegTypeLib &lt;span style="color:Green;"&gt;/*= TRUE*/&lt;/span&gt; ) &lt;span style="color:Blue;"&gt;throw&lt;/span&gt;()
    {
        HRESULT hRes = CAtlDllModuleT&amp;lt; CMyModule &amp;gt;::DllRegisterServer(bRegTypeLib);
        &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (SUCCEEDED(hRes)) {
            CComPtr&amp;lt;IPathCopyCopyContextMenuExt&amp;gt; cpPccExt;
            hRes = cpPccExt.CoCreateInstance(__uuidof(PathCopyCopyContextMenuExt));
            &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (SUCCEEDED(hRes)) {
                cpPccExt-&amp;gt;RegisterPlugin(__uuidof(MyPlugin));
            }
        }
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; hRes;
    }

    HRESULT CMyModule::DllUnregisterServer( BOOL bUnRegTypeLib &lt;span style="color:Green;"&gt;/*= TRUE*/&lt;/span&gt; ) &lt;span style="color:Blue;"&gt;throw&lt;/span&gt;()
    {
        HRESULT hRes = CAtlDllModuleT&amp;lt; CMyModule &amp;gt;::DllUnregisterServer(bUnRegTypeLib);
        &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (SUCCEEDED(hRes)) {
            CComPtr&amp;lt;IPathCopyCopyContextMenuExt&amp;gt; cpPccExt;
            hRes = cpPccExt.CoCreateInstance(__uuidof(PathCopyCopyContextMenuExt));
            &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (SUCCEEDED(hRes)) {
                cpPccExt-&amp;gt;UnregisterPlugin(__uuidof(MyPlugin));
            }
        }
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; hRes;
    }
&lt;/pre&gt;&lt;/div&gt;&lt;b&gt;IMPORTANT NOTE:&lt;/b&gt; Please do &lt;b&gt;NOT&lt;/b&gt; try to reverse-engineer Path Copy Copy&amp;#39;s plugin registration internals and how plugins are saved. This is not guaranteed to be stable from version to version. The registration interface, however, is guaranteed to always exist.&lt;br /&gt;
&lt;h2&gt;Questions?&lt;/h2&gt;
This concludes the developer documentation for Path Copy Copy. If you have further questions regarding any aspect of development (the source, the build system, plugin development, etc.) please don&amp;#39;t hesitate to post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions"&gt;Discussions&lt;/a&gt;&lt;/b&gt; section.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Last updated for version 9.2&lt;/i&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Wed, 12 Dec 2012 22:56:48 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Developer 20121212105648P</guid></item><item><title>Updated Wiki: Network Administrator</title><link>http://pathcopycopy.codeplex.com/wikipage?title=Network Administrator&amp;version=14</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;&lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User&lt;/a&gt;  |  Network Administrator  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Network%20Administrator"&gt;Developer&lt;/a&gt;&lt;/h5&gt;&lt;hr /&gt;
This subsection of the documentation is aimed at network administrators looking to preinstall or remotely install Path Copy Copy on their users&amp;#39; computer. The Path Copy Copy installer supports several command-line options to do so, as well as to preconfigure default options.&lt;br /&gt;
&lt;h2&gt;Network installation&lt;/h2&gt;
The Path Copy Copy setup application has been built using &lt;a href="http://www.jrsoftware.org/isinfo.php"&gt;Inno Setup&lt;/a&gt; and as such it supports all the standard Inno Setup &lt;b&gt;&lt;a href="http://www.jrsoftware.org/ishelp/index.php?topic=setupcmdline"&gt;command-line parameters&lt;/a&gt;&lt;/b&gt;. Here is a non-exhaustive list of the parameters that can be useful to a network administrator. For the complete list of options please refer to the Inno Setup website.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;/SP-&lt;/b&gt; : Suppresses the &lt;i&gt;This will install Path Copy Copy...&lt;/i&gt; message at the start of the installation.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/VERYSILENT&lt;/b&gt; : Suppresses the installation and progress windows. If a reboot is needed, it is executed without asking at end of setup.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/SUPPRESSMSGBOXES&lt;/b&gt; : Suppresses all prompts, error messages, etc. during setup.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/NORESTART&lt;/b&gt; : Prevents setup from restarting the computer if a reboot was required during installation. This can be useful when installing on a computer that could be in use.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/DIR=&amp;quot;&lt;i&gt;directory path&lt;/i&gt;&amp;quot;&lt;/b&gt; : Instructs setup to install Path Copy Copy in &lt;i&gt;directory path&lt;/i&gt; instead of the default directory in Program Files.&lt;/li&gt;&lt;/ul&gt;
A combination of these command-line options should probably be sufficient for typical network installations.&lt;br /&gt;
&lt;h2&gt;Setting default options&lt;/h2&gt;
Path Copy Copy is configurable via its &lt;i&gt;Settings&lt;/i&gt; application (see the &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;) and saves its settings in the Windows registry. When it needs a value for a setting, it first looks in the user&amp;#39;s own registry key and if no value is found, it looks in a global registry key that applies to all users on the computer (in other, more technical words, it looks in HKEY_CURRENT_USER first, then in HKEY_LOCAL_MACHINE). The Path Copy Copy setup allows you to configure default values for any setting by using command-line parameters:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;/PCCREGVALUEDWORD=&amp;quot;&lt;i&gt;name&lt;/i&gt;,&lt;i&gt;value&lt;/i&gt;&amp;quot;&lt;/b&gt; : Instructs setup to create a registry value of type REG_DWORD named &lt;i&gt;name&lt;/i&gt; and containing the value &lt;i&gt;value&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/PCCREGVALUESZ=&amp;quot;&lt;i&gt;name&lt;/i&gt;,&lt;i&gt;value&lt;/i&gt;&amp;quot;&lt;/b&gt; : Instructs setup to create a registry value of type REG_SZ (in other words, string) named &lt;i&gt;name&lt;/i&gt; and containing the value &lt;i&gt;value&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/PCCREGPIPELINEPLUGIN=&amp;quot;&lt;i&gt;id&lt;/i&gt;,&lt;i&gt;pipeline&lt;/i&gt;,&lt;i&gt;description&lt;/i&gt;&amp;quot;:&lt;/b&gt; Instructs setup to create a &lt;i&gt;custom command&lt;/i&gt; with the information provided. See below for more details.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/PCCREGPIPELINEPLUGINSDISPLAYORDER=&amp;quot;&lt;i&gt;id&lt;/i&gt;,&lt;i&gt;id&lt;/i&gt;,...&amp;quot;:&lt;/b&gt; Instructs setup to save the display order of custom commands. The display order is a comma-separated list of custom command IDs.&lt;/li&gt;&lt;/ul&gt;
Each setting in Path Copy Copy has its own registry value name. Here is a list of all available values, their data types, accepted values and purpose.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Value name &lt;/th&gt;&lt;th&gt; Data type &lt;/th&gt;&lt;th&gt; Possible values &lt;/th&gt;&lt;th&gt; Purpose &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;AddQuotes&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (no) or &lt;b&gt;1&lt;/b&gt; (yes) &lt;/td&gt;&lt;td&gt; If set to 1, will cause Path Copy Copy to surround all copied paths with quotes (&amp;quot;). &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;UseHiddenShares&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (no) or &lt;b&gt;1&lt;/b&gt; (yes) &lt;/td&gt;&lt;td&gt; If set to 1, Path Copy Copy will use hidden shares when looking for UNC paths (see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;). &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;AlwaysShowSubmenu&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (no) or &lt;b&gt;1&lt;/b&gt; (yes) &lt;/td&gt;&lt;td&gt; If set to 0, user will have to hold down the Shift key while right-clicking on a file to get the submenu with all commands. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;PluginsInMainMenu&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_SZ &lt;/td&gt;&lt;td&gt; Comma-separated list of plugin IDs (see below) &lt;/td&gt;&lt;td&gt; IDs of the commands (or &lt;b&gt;plugins&lt;/b&gt;) that will be shown directly in the main contextual menu (see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;). &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;PluginsNotInSubmenu&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_SZ &lt;/td&gt;&lt;td&gt; Comma-separated list of plugin IDs &lt;/td&gt;&lt;td&gt; IDs of plugins that will not be shown in the submenu. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;KeyLock&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (unlocked) or &lt;b&gt;1&lt;/b&gt; (locked) &lt;/td&gt;&lt;td&gt; If set to 1, will prevent the user from changing the settings. The &lt;i&gt;Settings&lt;/i&gt; menu item will not show up in the submenu and launching the Settings application by hand will give an error message. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Some values refer to specific commands. These are called &lt;b&gt;plugins&lt;/b&gt; in Path Copy Copy speech. Each command seen in the menu has an internal &lt;i&gt;plugin ID&lt;/i&gt;. The following table lists all plugins provided by default along with their IDs.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Command &lt;/th&gt;&lt;th&gt; Plugin ID &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short Name &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {C8757DCA-1BA8-48d0-8145-B93BBB9237AF} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long Name &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {3A42B5C6-72D6-4a8a-BA44-014FA64AA11A} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {93B362D1-2B13-467a-B618-6784F24F3BA1} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {331A3B60-AF49-44f4-B30D-56ADFF6D25E8} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {0929538B-5F52-4480-9902-2BBEC9C84905} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {349939D7-780F-43fd-A98E-83D9ADD44E22} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short UNC Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {891F9E3E-0B70-49fd-A86C-53B21C6193C7} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long UNC Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {EA24BCC3-35F5-46b9-A2A5-A12A0AED2D28} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short UNC Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {73188FB3-8E14-409c-95EF-BA608FDC1274} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long UNC Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {E2C942AC-917C-4aee-A867-8F6AB960BA76} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Internet Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {8F2ADCCC-9693-407d-9300-FCCB9A12B982} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Unix Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {5B5DA5CB-3284-45a9-A1E5-4D6B03107924} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Cygwin Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {CD50DCE3-9A5C-4adf-B552-1741361567D6} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;One switch allows you to pre-install some custom commands (see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;) on the computer. These are called &lt;b&gt;pipeline plugins&lt;/b&gt; in Path Copy Copy speech. Since their serialization is a bit complex, the easiest way to do it is to create the custom command on your computer and go in the registry to fetch the values needed to pass to the setup exe. Custom commands are stored in the &lt;i&gt;SOFTWARE\clechasseur\PathCopyCopy\PipelinePlugins&lt;/i&gt; key under HKEY_CURRENT_USER. The picture below shows you the various parts needed to create the setup command-line switch.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313338" alt="NetworkAdmin_DefaultOptions_PipelinePluginInRegistry.png" title="NetworkAdmin_DefaultOptions_PipelinePluginInRegistry.png" /&gt;&lt;br /&gt;&lt;br /&gt;Please note that if you add custom commands via the setup, their IDs can also be used for any configuration value that takes a plugin ID, such as &lt;b&gt;PluginsInMainMenu&lt;/b&gt;.&lt;br /&gt;
&lt;h2&gt;Questions? Issues?&lt;/h2&gt;
This concludes the Network Administrator documentation for Path Copy Copy. If you have a question regarding any aspect of the software, you can post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions"&gt;Discussions&lt;/a&gt;&lt;/b&gt; section. If something is not working as documented, do not hesitate to enter a work item in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/workitem/list/basic"&gt;Issue Tracker&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Last updated for version 9.2&lt;/i&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Wed, 12 Dec 2012 22:51:30 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Network Administrator 20121212105130P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://pathcopycopy.codeplex.com/documentation?version=15</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;End-User  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Documentation"&gt;Network Administrator&lt;/a&gt;  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Documentation"&gt;Developer&lt;/a&gt;&lt;/h5&gt;&lt;hr /&gt;
Welcome to the Path Copy Copy documentation. It has been divided into three subsections that you can access via the links at the top of the page.&lt;br /&gt;This subsection contains information for end-users looking to install and use Path Copy Copy.&lt;br /&gt;
&lt;h2&gt;Purpose&lt;/h2&gt;
Path Copy Copy is an extension for &lt;b&gt;Windows Explorer&lt;/b&gt; (and alternative shell programs) that allows you to quickly copy to the clipboard the &lt;b&gt;path&lt;/b&gt; of a file, folder or group of files. A file&amp;#39;s path represents the location of the file in the filesystem. It usually begins with a drive letter (except for network paths) and is composed of zero or more directories, ending with the file&amp;#39;s name.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297062" alt="EndUser_Purpose_Path.png" title="EndUser_Purpose_Path.png" /&gt;&lt;br /&gt;&lt;i&gt;Path of this file: C:\Example\Sample File.txt&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Having a file&amp;#39;s path can be useful to paste it in another program asking for a file. For example, you can paste the full path of a file in an Open dialog box to quickly open a file without having to navigate to it by hand. If you had an Explorer window already open at the file&amp;#39;s location, you can save time. It can also be useful when launching a program from the command-line. There are other uses too; it depends on your workflow. (Note that if you are unsure if Path Copy Copy is useful for you, you can try it for a while and simply uninstall it if you don&amp;#39;t find yourself using it enough.)&lt;br /&gt;
&lt;h2&gt;Requirements&lt;/h2&gt;
In order to install and use Path Copy Copy, your computer needs to meet these minimum requirements.
&lt;ul&gt;&lt;li&gt;Windows XP with Service Pack 2, Windows Vista, Windows 7, Windows Server 2003, Windows Server 2008 or Windows Server 2008 R2&lt;/li&gt;
&lt;li&gt;.NET Framework 2.0 (will most likely be already installed on all these OSes - otherwise, install via Windows Update)&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Installing&lt;/h2&gt;
Installing Path Copy Copy is easy. Simply download the latest release by selecting &lt;b&gt;Downloads&lt;/b&gt; from the list of project pages above, download the setup exe and execute it. An installation wizard will show up to help you with the installation.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338342" alt="EndUser_Installing_WizardWelcome.png" title="EndUser_Installing_WizardWelcome.png" /&gt;&lt;br /&gt;&lt;i&gt;The Welcome page of the Path Copy Copy&amp;#39;s installation wizard&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Click Next to navigate the wizard pages. After agreeing to the Path Copy Copy &lt;a href="http://pathcopycopy.codeplex.com/license"&gt;license&lt;/a&gt; and choosing an installation directory (the default is usually fine), you will be asked to pre-configure available commands.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338343" alt="EndUser_Installing_PreConfigureCommands.png" title="EndUser_Installing_PreConfigureCommands.png" /&gt;&lt;br /&gt;&lt;i&gt;Choosing which commands are available during installation&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The choice you make on this page will determine the &amp;quot;commands&amp;quot; that will be visible in the Path Copy Copy contextual submenu. The default choice, &amp;quot;commonly-used commands only&amp;quot;, will probably be sufficient for most users. Please note that whatever choice you pick, you can always go back later and change the commands in the settings application. &lt;b&gt;Note:&lt;/b&gt; this page will not appear if you are upgrading from a previous version.&lt;br /&gt;&lt;br /&gt;After the wizard finishes, setup simply disappears and Path Copy Copy is ready for use.&lt;br /&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
Using Path Copy Copy is also simple. Simply right-click on a file, folder or group of files in the Windows Explorer&amp;#39;s window and the contextual menu that shows up will now include two things: a Path Copy Copy &lt;b&gt;default command&lt;/b&gt; as well as a submenu containing &lt;b&gt;all commands available&lt;/b&gt;. The submenu will also include an item to open the &lt;b&gt;settings&lt;/b&gt;. (Note that the commands found in the submenu depend on the choice made during installation.)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297071" alt="EndUser_Usage_MenuItems.png" title="EndUser_Usage_MenuItems.png" /&gt;&lt;br /&gt;&lt;i&gt;The various parts of Path Copy Copy&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Selecting the default command will copy the selected file&amp;#39;s full path to the clipboard. Other path formats are available by selecting them from the submenu:
&lt;ul&gt;&lt;li&gt;Just the file&amp;#39;s &lt;b&gt;name&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Short&lt;/b&gt; path format, which corresponds to the old MS-DOS 8.3 format. Note that this format guarantees that the path contains no spaces.&lt;/li&gt;
&lt;li&gt;The file&amp;#39;s &lt;b&gt;parent folder&lt;/b&gt; path (useful to quickly navigate to that folder).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;UNC&lt;/b&gt; paths, also known as network paths - useful if you have mapped network drives or files to share with others over a corporate network.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Internet&lt;/b&gt; path, using the file:// protocol and with escaped whitespaces - useful to open the file in a Web Browser.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Unix&lt;/b&gt; and &lt;b&gt;Cygwin&lt;/b&gt; paths, using forward slashes (/) instead of backslashes (\) to separate directories - useful if you&amp;#39;re using Unix utilities.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Options&lt;/h2&gt;
Choosing the &lt;i&gt;Settings&lt;/i&gt; item in Path Copy Copy&amp;#39;s submenu will launch an application allowing you to customize some of Path Copy Copy&amp;#39;s behavior. This application has a tabbed interface and three buttons at the bottom. To edit the settings and save, press either the &lt;b&gt;Apply&lt;/b&gt; or &lt;b&gt;OK&lt;/b&gt; button. To close without saving changes to the settings, press the &lt;b&gt;Cancel&lt;/b&gt; button.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; it&amp;#39;s possible that the Settings item is not present if Path Copy Copy has been installed by your network administrator and its settings have been locked.
&lt;h4&gt;Commands tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338884" alt="EndUser_Options_CommandsTab.png" title="EndUser_Options_CommandsTab.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab allows you to choose which commands will be shown in Explorer&amp;#39;s &lt;b&gt;main contextual menu&lt;/b&gt; and the Path Copy Copy &lt;b&gt;submenu&lt;/b&gt;. By default, the &lt;b&gt;Copy Long Path&lt;/b&gt; command is shown in the main menu and other commands are shown in the submenu (depending on the choice made during installation). The checkboxes next to each command in the list allows you to change the default layout.&lt;br /&gt;&lt;br /&gt;A command can show up both in the main menu and the submenu. Unchecking both checkboxes will cause the command to not show up at all; useful for commands that are not useful to a specific user.&lt;br /&gt;
&lt;h4&gt;Custom Commands tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338885" alt="EndUser_Options_CustomCommandsTab.png" title="EndUser_Options_CustomCommandsTab.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab allows you to configure &lt;b&gt;custom commands&lt;/b&gt; that can decide how the path will be copied to the clipboard. This tab contains a list of all existing custom commands as well as several buttons to manipulate them. The &lt;i&gt;Move Up&lt;/i&gt; and &lt;i&gt;Move Down&lt;/i&gt; buttons allow you to organize the custom commands in the order you see fit. The &lt;i&gt;New&lt;/i&gt; button will open another dialog to create a custom command (see below). The &lt;i&gt;Edit&lt;/i&gt; button allows you to modify the behavior of an existing custom command. Finally, the &lt;i&gt;Remove&lt;/i&gt; button allows you to remove custom commands from the available commands.&lt;br /&gt;&lt;br /&gt;Once defined, custom commands can be configured to appear in the main menu or submenu, from the &lt;i&gt;Commands&lt;/i&gt; tab. Also note that custom commands are &lt;i&gt;user-specific&lt;/i&gt; - each user account has its own custom commands (except if some are pre-installed by your network administrator).&lt;br /&gt;
&lt;h4&gt;Advanced tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338883" alt="EndUser_Options_AdvancedTab.png" title="EndUser_Options_AdvancedTab.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab contains checkboxes for the following options:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Add quotes around copied paths:&lt;/b&gt; Paths copied will be surrounded by quotes (&amp;quot;).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use hidden shares when copying UNC paths:&lt;/b&gt; Hidden shares are those ending with a dollar sign ($). Creating such a share means it won&amp;#39;t show up when other network users look for shares on your machine, but if someone knows the share name, it can be used to access the share. By default, Path Copy Copy does not consider such shares when looking for a share path for a file. If this is selected, hidden shares will be considered. Please note that this also includes administrative shares (\\computername\C$, for example).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Always show submenu:&lt;/b&gt; Selected by default, this option makes it so that Path Copy Copy&amp;#39;s submenu is always shown in the shell&amp;#39;s contextual menu. If this is deselected, you will need to hold down the Shift key while right-clicking on a file to see the submenu.&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;Custom Command dialog box&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313335" alt="EndUser_CustomCommand_Tab1.png" title="EndUser_CustomCommand_Tab1.png" /&gt;&lt;br /&gt;&lt;br /&gt;This dialog, spawned by either the &lt;i&gt;New&lt;/i&gt; or &lt;i&gt;Edit&lt;/i&gt; buttons of the &lt;i&gt;Custom Commands&lt;/i&gt; tab of the settings application, allows you to configure the behavior of a custom command. Each custom command can be given a &lt;b&gt;name&lt;/b&gt; that will be used to display the command in the Path Copy Copy menus. Next, there are two steps to configuring the custom command.&lt;br /&gt;
&lt;h6&gt;Choosing a base command&lt;/h6&gt;
The first step that a custom command will perform when computing the path is call an existing &lt;b&gt;base command&lt;/b&gt;. For example, you may want your custom command to modify the normal output of the &lt;i&gt;UNC Path&lt;/i&gt; command. To choose the base command, simply select it in the listbox that is located in the &lt;i&gt;Base Command&lt;/i&gt; tab of the dialog box.&lt;br /&gt;
&lt;h6&gt;Configuring options&lt;/h6&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313336" alt="EndUser_CustomCommand_Tab2.png" title="EndUser_CustomCommand_Tab2.png" /&gt;&lt;br /&gt;&lt;br /&gt;The second tab of the dialog box, named &lt;i&gt;Options&lt;/i&gt;, can be used to alter the path that will be copied to the clipboard when the custom command is invoked. There are several options to choose from.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Enclose path in quotation marks:&lt;/b&gt; As the checkbox says, this will cause the path to be surrounded by quotes. Note: if you also choose this option globally, there will be two pair of quotes around the path!&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Change slashes:&lt;/b&gt; Causes all forward slashes ( / ) in the path to be converted to backslashes ( \ ), or vice-versa.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Find / Replace:&lt;/b&gt; Will perform a find/replace operation in the path, replacing all instances of the text entered in the &lt;i&gt;Find what&lt;/i&gt; edit box with the text in the &lt;i&gt;Replace with&lt;/i&gt; edit box.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Once you are satisfied with your configuration, press the &lt;i&gt;OK&lt;/i&gt; button at the bottom of the dialog box to save the custom command. You can cancel the creation/editing by pressing the &lt;i&gt;Cancel&lt;/i&gt; button.&lt;br /&gt;
&lt;h2&gt;Questions? Issues?&lt;/h2&gt;
This concludes the little End-User documentation for Path Copy Copy. If you have a question regarding any aspect of the software, you can post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions"&gt;Discussions&lt;/a&gt;&lt;/b&gt; section. If you have an issue (either because of a bug, a feature not working as it should or even a feature you would like to see implemented), do not hesitate to enter a work item in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/workitem/list/basic"&gt;Issue Tracker&lt;/a&gt;&lt;/b&gt;. If the information you were looking for is not here, you can try to look in the two other subsections, &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Documentation"&gt;Network Administrator&lt;/a&gt; and &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Documentation"&gt;Developer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Last updated for version 9.2&lt;/i&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Wed, 12 Dec 2012 22:51:02 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20121212105102P</guid></item><item><title>Updated Wiki: Home</title><link>http://pathcopycopy.codeplex.com/wikipage?version=27</link><description>&lt;div class="wikidoc"&gt;A Windows Explorer add-on that adds a contextual menu item on all files and folders allowing the user to copy the path in various formats. Idea copied from &amp;#34;Path Copy&amp;#34;.&lt;br /&gt;&lt;br /&gt;Works on Windows XP or later, both 32-bit and 64-bit versions.&lt;br /&gt;&lt;div style="text-align:right;float:right;"&gt;&lt;a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&amp;amp;business=LM5B9WNTH4KN4&amp;amp;lc=CA&amp;amp;item_name=Charles%20Lechasseur&amp;amp;item_number=PathCopyCopy&amp;amp;currency_code=CAD&amp;amp;bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted"&gt;&lt;img style="border:none;" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" alt="If you use Path Copy Copy and like it, please consider donating!" title="If you use Path Copy Copy and like it, please consider donating!" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=248790" alt="PathCopyCopyContextualMenu.png" title="PathCopyCopyContextualMenu.png" /&gt;&lt;br /&gt;&lt;i&gt;The Path Copy Copy contextual menu items.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The extension has a modular architecture where each menu item in the sub-menu is actually a &lt;i&gt;Plugin&lt;/i&gt;.&lt;br /&gt;Custom plugins are supported using COM - plugin developers should check out the &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Home"&gt;Documentation&lt;/a&gt; section for details.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Note to reviewers&lt;/u&gt;: I cannot reply to review comments so I have created a discussion topic to do it. If you&amp;#39;ve asked some questions in a review comment, please see &lt;a href="http://pathcopycopy.codeplex.com/discussions/60179"&gt;this discussion thread&lt;/a&gt;.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Wed, 12 Dec 2012 22:48:38 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121212104838P</guid></item><item><title>Updated Wiki: Developer</title><link>http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;version=24</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;&lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Developer"&gt;End-User&lt;/a&gt;  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Developer"&gt;Network Administrator&lt;/a&gt;  |  Developer&lt;/h5&gt;&lt;hr /&gt;
This subsection of the documentation is aimed at software developers interested in Path Copy Copy. It is divided into two parts: developers looking to build Path Copy Copy from source, and developers looking to create their own Path Copy Copy commands (also known as &lt;b&gt;plugins&lt;/b&gt;).&lt;br /&gt;
&lt;h2&gt;Getting the source&lt;/h2&gt;
Path Copy Copy uses &lt;b&gt;&lt;a href="http://mercurial.selenic.com/"&gt;Mercurial&lt;/a&gt;&lt;/b&gt; for its source control. For those of you not familiar with it, Mercurial is a distributed version control system - this means that each developer has a full copy of the repository on his/her machine. (&lt;a href="http://hginit.com/"&gt;HgInit&lt;/a&gt; might also be a good place to start if you&amp;#39;re new to Mercurial.)&lt;br /&gt;&lt;br /&gt;There are two ways to get the source for Path Copy Copy in order to build it. The first one is to use a Mercurial client to &lt;b&gt;clone&lt;/b&gt; the Path Copy Copy repository. The clone URL to use is &lt;b&gt;https://hg01.codeplex.com/pathcopycopy&lt;/b&gt;. You can use any Mercurial client to do this. On Windows, &lt;a href="http://tortoisehg.bitbucket.org/"&gt;TortoiseHg&lt;/a&gt; is a popular graphical Mercurial client that works well.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297461" alt="Developer_GettingTheSource_CloneRepoTortoiseHg.png" title="Developer_GettingTheSource_CloneRepoTortoiseHg.png" /&gt;&lt;br /&gt;&lt;sup&gt;Cloning the Path Copy Copy repository with TortoiseHg&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;Once the clone operation completes, you can go in your chosen destination folder and see all Path Copy Copy project files.&lt;br /&gt;&lt;br /&gt;The second way to get the source is to download a pre-packaged revision. You can do so by going to the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/SourceControl/list/changesets"&gt;Source Code&lt;/a&gt;&lt;/b&gt; tab and click on the Download link just under &lt;b&gt;Latest Version&lt;/b&gt; on the right-hand side. After agreeing to the license, you will be able to download a complete version of the Path Copy Copy project files as a ZIP archive. Simply unzip it anywhere to be able to use it.&lt;br /&gt;&lt;br /&gt;Whatever mean you choose to get the source, once you have it, you should probably read the README.TXT in the root directory. This file is a quick list of most other files in the Path Copy Copy source tree and is aimed at developers to read.&lt;br /&gt;
&lt;h2&gt;Building the shell extension&lt;/h2&gt;
Path Copy Copy has been developed using &lt;b&gt;Microsoft Visual Studio&lt;/b&gt;. Although it might be possible to adapt the source to build it with another tool, it has never been attempted. Make sure you meet the minimum prerequisites listed on the right before you attempt to build any part of the source.&lt;br /&gt;&lt;br /&gt;Path Copy Copy is divided into two components, each with its own Visual Studio solution: the shell extension (responsible for adding the menu items in the shell&amp;#39;s contextual menu) and the settings application (launched with the user chooses &lt;i&gt;Settings&lt;/i&gt; in the menu - see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Developer"&gt;End-User tab&lt;/a&gt;). In order to build the shell extension, open the &lt;b&gt;PathCopyCopy.sln&lt;/b&gt; file.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297466" alt="Developer_BuildingShellExt_PathCopyCopySln.png" title="Developer_BuildingShellExt_PathCopyCopySln.png" /&gt;&lt;br /&gt;&lt;sup&gt;The PathCopyCopy solution&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;This solution contains two projects: &lt;b&gt;PathCopyCopy&lt;/b&gt; and &lt;b&gt;TestPlugins&lt;/b&gt;. The second project simply contains plugin implementations used for testing purposes and are never shipped with Path Copy Copy. Thus, this project is out of the scope of this documentation. Feel free to examine it if you want.&lt;br /&gt;&lt;br /&gt;The Path Copy Copy shell extension is written in C++ and uses ATL. It is made of several different source files. Although this documentation won&amp;#39;t dig into the structure of the code itself, feel free to do so on your own if you want to learn how Path Copy Copy works (especially the &lt;i&gt;PathCopyCopyContextMenuExt&lt;/i&gt; class and the various &lt;i&gt;Plugins&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;The PathCopyCopy project has two configurations, &lt;b&gt;Debug&lt;/b&gt; and &lt;b&gt;Release&lt;/b&gt;, as well as two platforms, &lt;b&gt;Win32&lt;/b&gt; and &lt;b&gt;x64&lt;/b&gt;. The Debug configuration should only be needed if you intend to trace into the Path Copy Copy code, so most likely, you will want to select Release. Also, it is important that each version of Path Copy Copy is built in &lt;b&gt;32-bit&lt;/b&gt; (Win32 platform) and &lt;b&gt;64-bit&lt;/b&gt; (x64 platform) formats, so as to be able to run on any system.&lt;br /&gt;&lt;br /&gt;Once you are ready to build the shell extension, simply choose &lt;i&gt;Batch Build...&lt;/i&gt; under the Build menu, check both &lt;i&gt;Release|Win32&lt;/i&gt; and &lt;i&gt;Release|x64&lt;/i&gt; solution config of the PathCopyCopy project, and click &lt;b&gt;Build&lt;/b&gt;. Building should not take long depending on the speed of your computer.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297471" alt="Developer_BuildingShellExt_BatchBuilding.png" title="Developer_BuildingShellExt_BatchBuilding.png" /&gt;&lt;br /&gt;&lt;sup&gt;Using Batch Build to build both versions of PathCopyCopy&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;The output files, including the final &lt;b&gt;PathCopyCopy.dll&lt;/b&gt;, are written in the &lt;i&gt;bin&lt;/i&gt; directory under the root source directory. Object files will be in the &lt;i&gt;obj&lt;/i&gt; directory, next to bin. Note that the build mechanism will automatically &lt;i&gt;register&lt;/i&gt; the DLL, as the shell extension is a COM object.&lt;br /&gt;
&lt;h2&gt;Building the settings application&lt;/h2&gt;
When the user selects the &lt;i&gt;Settings...&lt;/i&gt; item in the Path Copy Copy submenu, the shell extension launches the &lt;b&gt;Settings application&lt;/b&gt; to let the user modify the options. This application has its own Visual Studio solution named &lt;b&gt;PathCopyCopySettings.sln&lt;/b&gt;. This solution contains a single project that is written in C# and targets .NET Framework 2.0.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297472" alt="Developer_BuildingSettingsApp_PathCopyCopySettingsSln.png" title="Developer_BuildingSettingsApp_PathCopyCopySettingsSln.png" /&gt;&lt;br /&gt;&lt;sup&gt;The PathCopyCopySettings solution&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;The Settings project is a &lt;b&gt;Windows Forms&lt;/b&gt; project whose central source file is named &lt;b&gt;MainForm&lt;/b&gt;. The other source files contain code to deal with the user settings and plugins. Again, this documentation won&amp;#39;t dig into the code. Feel free to explorer if you want to see how settings are changed.&lt;br /&gt;&lt;br /&gt;The PathCopyCopySettings solution again has two configurations, &lt;b&gt;Debug&lt;/b&gt; and &lt;b&gt;Release&lt;/b&gt;, but a single platform named &lt;b&gt;AnyCPU&lt;/b&gt;. This is because a .NET application is platform-agnostic by default. In our case, it will run as a 32-bit application if the user is on a 32-bit system, and as a 64-bit application if on a 64-bit system. Again, the Debug configuration is only needed to trace in the code, so Release should be used in most circumstances.&lt;br /&gt;&lt;br /&gt;Once you are ready to build the settings application, select &lt;b&gt;Release&lt;/b&gt; from the configuration dropdown and &lt;b&gt;Build Solution&lt;/b&gt; from the &lt;i&gt;Build&lt;/i&gt; menu. The output and object files will be saved in the same place as the shell extension project&amp;#39;s, alongside those files. Please note that although the project is platform-agnostic, it is first built in &lt;b&gt;Win32&lt;/b&gt; and then a post-build step is used to copy it to &lt;b&gt;x64&lt;/b&gt; so that both versions of the shell extension will be successfully able to find the application. The application file is named &lt;b&gt;PathCopyCopySettings.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;After both projects have been built, Path Copy Copy should be ready to use. Since the COM object has been registered after building, simply right-clicking on a file or folder should show up the Path Copy Copy menu items.&lt;br /&gt;
&lt;h2&gt;Building the installer&lt;/h2&gt;
For those who may need to modify Path Copy Copy and redistribute the modified version, building the installer may be needed. Path Copy Copy&amp;#39;s setup has been built using the &lt;b&gt;&lt;a href="http://www.jrsoftware.org/isinfo.php"&gt;Inno Setup&lt;/a&gt;&lt;/b&gt; tool. In order to build the installer, make sure you have Inno Setup installed. You also need the Inno Setup Preprocessor, a free add-on. The simplest way to get it all in one package is to use the &lt;b&gt;QuickStart Pack&lt;/b&gt; (see the &lt;a href="http://www.jrsoftware.org/isdl.php"&gt;Inno Setup download page&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Building the Path Copy Copy setup is easy. Simply open the &lt;b&gt;Setup.iss&lt;/b&gt; file located in the &lt;i&gt;Installer&lt;/i&gt; directory under the root source directory and choose &lt;b&gt;Compile&lt;/b&gt; from the Inno Setup Compiler toolbar. (Note that if you installed InnoIDE using the QuickStart Pack, it will open instead of the Inno Setup Compiler. The same &lt;i&gt;Compile&lt;/i&gt; command exists in its toolbar, however, and works the same way.)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297572" alt="Developer_BuildingInstaller_CompilingIsc.png" title="Developer_BuildingInstaller_CompilingIsc.png" /&gt;&lt;br /&gt;&lt;sup&gt;Compiling the Path Copy Copy setup using Inno Setup Compiler&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;Once the compilation completes, go back to the &lt;i&gt;Installer&lt;/i&gt; directory and a new directory named &lt;b&gt;Output&lt;/b&gt; will have been created. It will contain the setup application, named &lt;b&gt;PathCopyCopy&lt;i&gt;VersionNumber&lt;/i&gt;.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;This concludes the documentation to build Path Copy Copy from source. Those of you wishing to develop custom plugins can continue to the next section.&lt;br /&gt;
&lt;h2&gt;Plugin development&lt;/h2&gt;
Path Copy Copy has been designed with a modular architecture. Each command seen in the contextual menu is called a &lt;b&gt;plugin&lt;/b&gt; internally. It is possible to create and distribute custom plugins in the form of &lt;b&gt;COM objects&lt;/b&gt; implementing custom Path Copy Copy interfaces. In this chapter, the sample C++ plugin project will be shown, but it should be possible to write custom plugins in any programming language using any environment, as long as it supports COM object development.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note&lt;/b&gt;: it is assumed here that you are familiar with the C++ language and the development of COM objects using the ATL library. Learning to do this is outside the scope of this documentation. Please refer to web tutorials for more information.&lt;br /&gt;&lt;br /&gt;Path Copy Copy ships with a sample Visual C++ project that implements a complete plugin. There are two places where it can be found:
&lt;ul&gt;&lt;li&gt;In Path Copy Copy&amp;#39;s installation directory, under &lt;i&gt;Samples\Plugins\COM\C++&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;In Path Copy Copy&amp;#39;s source tree, under &lt;i&gt;Samples\SampleCOMPluginCpp&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt;
The sample comes with a Visual Studio 2008 solution containing a single project, itself containing only one important class named &lt;b&gt;SamplePathCopyCopyPlugin&lt;/b&gt;. It also uses a file named &lt;b&gt;PathCopyCopy_i.h&lt;/b&gt; that is very important as it contains the definintions of Path Copy Copy&amp;#39;s custom interfaces.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297577" alt="Developer_PluginDevelopment_SampleCOMCppProject.png" title="Developer_PluginDevelopment_SampleCOMCppProject.png" /&gt;&lt;br /&gt;&lt;sup&gt;The sample C++ COM plugin project&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;Opening &lt;i&gt;SamplePathCopyCopyPlugin.h&lt;/i&gt; will display the declaration of the COM plugin class. In order to showcase them all, the class implements all three Path Copy Copy interfaces.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297726" alt="Developer_PluginDevelopment_SampleClassIntf.png" title="Developer_PluginDevelopment_SampleClassIntf.png" /&gt;&lt;br /&gt;&lt;sup&gt;The sample plugin class&amp;#39; declaration with the Path Copy Copy interfaces&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;In order to be usable by Path Copy Copy, your plugin COM object needs to implement at least the &lt;b&gt;IPathCopyCopyPlugin&lt;/b&gt; interface. The other interfaces are optional and can be implemented only if needed.
&lt;h4&gt;IPathCopyCopyPlugin interface&lt;/h4&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// IPathCopyCopyPlugin interface&lt;/span&gt;
    STDMETHOD(get_Description)(BSTR *p_ppDescription);
    STDMETHOD(get_HelpText)(BSTR *p_ppHelpText);
    STDMETHOD(GetPath)(BSTR p_pPath, BSTR *p_ppNewPath);
&lt;/pre&gt;&lt;/div&gt;Base interface that is required for all Path Copy Copy plugins. In contains three methods:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;get_Description:&lt;/b&gt; Must return the plugin&amp;#39;s description string. Will be displayed in the contextual menu to identify the plugin.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get_HelpText:&lt;/b&gt; Can return a help text that will be shown in the shell&amp;#39;s status bar when the cursor hovers over the plugin&amp;#39;s contextual menu item. It is legal to return &lt;span class="codeInline"&gt;NULL&lt;/span&gt; or an empty string for this.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GetPath:&lt;/b&gt; Main work method invoked by Path Copy Copy when it needs to get the path for a particular file or folder. This method can be called repeatedly if the user selected a group of files. It receives the full path to the file as input and must return a path, modified as needed.&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;IPathCopyCopyPluginGroupInfo interface&lt;/h4&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// IPathCopyCopyPluginGroupInfo interface&lt;/span&gt;
    STDMETHOD(get_GroupId)(ULONG *p_pGroupId);
    STDMETHOD(get_GroupPosition)(ULONG *p_pPosition);
&lt;/pre&gt;&lt;/div&gt;Optional interface that can be implemented when working on a group of plugins so that they are kept next to each other in the contextual menu. If this interface is not implemented, all custom plugins end up in the same &amp;quot;group&amp;quot; in the menu. This interface allows plugins to group together and determine ordering. It contains two methods:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;get_GroupId:&lt;/b&gt; Must return the &lt;b&gt;group ID&lt;/b&gt; (see below) of the group of plugins to which this plugin belongs to. All plugins with the same group ID will appear in the same block in the contextual menu, surrounded by separators.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get_GroupPosition:&lt;/b&gt; Must return the zero-based position of the plugin within the group. Path Copy Copy will display plugins in ascending order of group position when displaying the group.&lt;/li&gt;&lt;/ul&gt;
Plugin groups are identified by an &lt;b&gt;ID&lt;/b&gt; that is a 32-bit unsigned integer. Since there is no real way to know which IDs are already in use, developers are encouraged to specify their group ID using a four-char code, like this:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    STDMETHODIMP MyPlugin::get_GroupId(ULONG *p_pGroupId)
    {
        *p_pGroupId = &amp;#39;MYGP&amp;#39;;
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; S_OK;
    }
&lt;/pre&gt;&lt;/div&gt;Furthermore, group IDs composed of all lowercase letters are considered &lt;b&gt;reserved&lt;/b&gt; for internal use.&lt;br /&gt;
&lt;h4&gt;IPathCopyCopyStateInfo interface&lt;/h4&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// IPathCopyCopyPluginStateInfo&lt;/span&gt;
    STDMETHOD(Enabled)(BSTR p_pParentPath, BSTR p_pFile, VARIANT_BOOL *p_pEnabled);
&lt;/pre&gt;&lt;/div&gt;Optional interface that allows a plugin to specify its state in the contextual menu. It contains a single method:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Enabled:&lt;/b&gt; Called when the contextual menu is built to know if the plugin&amp;#39;s entry should be enabled or not. The method receives two information to decide: the &lt;b&gt;path of a file&lt;/b&gt; that was selected by the user, and the &lt;b&gt;path of its parent directory&lt;/b&gt;. In order to be disabled, the method must return &lt;span class="codeInline"&gt;S_OK&lt;/span&gt; and set the &lt;span class="codeInline"&gt;VARIANT_BOOL&lt;/span&gt; parameter to &lt;span class="codeInline"&gt;VARIANT_FALSE&lt;/span&gt;; any other combination of results will leave the plugin enabled.&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;Plugin registration&lt;/h4&gt;
Once your plugin has been developed, it needs to be registered as a COM object as well as with Path Copy Copy. In order to do this, the Path Copy Copy contextual menu extension COM object includes two methods to &lt;b&gt;register&lt;/b&gt; and &lt;b&gt;unregister&lt;/b&gt; a plugin. One place to do this is in the &lt;i&gt;DllRegisterServer&lt;/i&gt; override of your ATL module.&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// In dllmain.h&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;class&lt;/span&gt; CMyModule : &lt;span style="color:Blue;"&gt;public&lt;/span&gt; CAtlDllModuleT&amp;lt; CMyModule &amp;gt;
    {
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; :
        DECLARE_LIBID(...)
        DECLARE_REGISTRY_APPID_RESOURCEID(...)

        HRESULT DllRegisterServer(BOOL bRegTypeLib = TRUE) &lt;span style="color:Blue;"&gt;throw&lt;/span&gt;();
        HRESULT DllUnregisterServer(BOOL bUnRegTypeLib = TRUE) &lt;span style="color:Blue;"&gt;throw&lt;/span&gt;();
    };
&lt;/pre&gt;&lt;/div&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// In dllmain.cpp&lt;/span&gt;
    HRESULT CMyModule::DllRegisterServer( BOOL bRegTypeLib &lt;span style="color:Green;"&gt;/*= TRUE*/&lt;/span&gt; ) &lt;span style="color:Blue;"&gt;throw&lt;/span&gt;()
    {
        HRESULT hRes = CAtlDllModuleT&amp;lt; CMyModule &amp;gt;::DllRegisterServer(bRegTypeLib);
        &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (SUCCEEDED(hRes)) {
            CComPtr&amp;lt;IPathCopyCopyContextMenuExt&amp;gt; cpPccExt;
            hRes = cpPccExt.CoCreateInstance(__uuidof(PathCopyCopyContextMenuExt));
            &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (SUCCEEDED(hRes)) {
                cpPccExt-&amp;gt;RegisterPlugin(__uuidof(MyPlugin));
            }
        }
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; hRes;
    }

    HRESULT CMyModule::DllUnregisterServer( BOOL bUnRegTypeLib &lt;span style="color:Green;"&gt;/*= TRUE*/&lt;/span&gt; ) &lt;span style="color:Blue;"&gt;throw&lt;/span&gt;()
    {
        HRESULT hRes = CAtlDllModuleT&amp;lt; CMyModule &amp;gt;::DllUnregisterServer(bUnRegTypeLib);
        &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (SUCCEEDED(hRes)) {
            CComPtr&amp;lt;IPathCopyCopyContextMenuExt&amp;gt; cpPccExt;
            hRes = cpPccExt.CoCreateInstance(__uuidof(PathCopyCopyContextMenuExt));
            &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (SUCCEEDED(hRes)) {
                cpPccExt-&amp;gt;UnregisterPlugin(__uuidof(MyPlugin));
            }
        }
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; hRes;
    }
&lt;/pre&gt;&lt;/div&gt;&lt;b&gt;IMPORTANT NOTE:&lt;/b&gt; Please do &lt;b&gt;NOT&lt;/b&gt; try to reverse-engineer Path Copy Copy&amp;#39;s plugin registration internals and how plugins are saved. This is not guaranteed to be stable from version to version. The registration interface, however, is guaranteed to always exist.&lt;br /&gt;
&lt;h2&gt;Questions?&lt;/h2&gt;
This concludes the developer documentation for Path Copy Copy. If you have further questions regarding any aspect of development (the source, the build system, plugin development, etc.) please don&amp;#39;t hesitate to post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions"&gt;Discussions&lt;/a&gt;&lt;/b&gt; section.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;sub&gt;Last updated for version 9.2&lt;/sub&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Wed, 09 May 2012 20:09:18 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Developer 20120509080918P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://pathcopycopy.codeplex.com/documentation?version=14</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;End-User  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Documentation"&gt;Network Administrator&lt;/a&gt;  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Documentation"&gt;Developer&lt;/a&gt;&lt;/h5&gt;&lt;hr /&gt;
Welcome to the Path Copy Copy documentation. It has been divided into three subsections that you can access via the links at the top of the page.&lt;br /&gt;This subsection contains information for end-users looking to install and use Path Copy Copy.&lt;br /&gt;
&lt;h2&gt;Purpose&lt;/h2&gt;
Path Copy Copy is an extension for &lt;b&gt;Windows Explorer&lt;/b&gt; (and alternative shell programs) that allows you to quickly copy to the clipboard the &lt;b&gt;path&lt;/b&gt; of a file, folder or group of files. A file&amp;#39;s path represents the location of the file in the filesystem. It usually begins with a drive letter (except for network paths) and is composed of zero or more directories, ending with the file&amp;#39;s name.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297062" alt="EndUser_Purpose_Path.png" title="EndUser_Purpose_Path.png" /&gt;&lt;br /&gt;&lt;sup&gt;Path of this file: C:\Example\Sample File.txt&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;Having a file&amp;#39;s path can be useful to paste it in another program asking for a file. For example, you can paste the full path of a file in an Open dialog box to quickly open a file without having to navigate to it by hand. If you had an Explorer window already open at the file&amp;#39;s location, you can save time. It can also be useful when launching a program from the command-line. There are other uses too; it depends on your workflow. (Note that if you are unsure if Path Copy Copy is useful for you, you can try it for a while and simply uninstall it if you don&amp;#39;t find yourself using it enough.)&lt;br /&gt;
&lt;h2&gt;Requirements&lt;/h2&gt;
In order to install and use Path Copy Copy, your computer needs to meet these minimum requirements.
&lt;ul&gt;&lt;li&gt;Windows XP with Service Pack 2, Windows Vista, Windows 7, Windows Server 2003, Windows Server 2008 or Windows Server 2008 R2&lt;/li&gt;
&lt;li&gt;.NET Framework 2.0 (will most likely be already installed on all these OSes - otherwise, install via Windows Update)&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Installing&lt;/h2&gt;
Installing Path Copy Copy is easy. Simply download the latest release by selecting &lt;b&gt;Downloads&lt;/b&gt; from the list of project pages above, download the setup exe and execute it. An installation wizard will show up to help you with the installation.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338342" alt="EndUser_Installing_WizardWelcome.png" title="EndUser_Installing_WizardWelcome.png" /&gt;&lt;br /&gt;&lt;sup&gt;The Welcome page of the Path Copy Copy&amp;#39;s installation wizard&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;Click Next to navigate the wizard pages. After agreeing to the Path Copy Copy &lt;a href="http://pathcopycopy.codeplex.com/license"&gt;license&lt;/a&gt; and choosing an installation directory (the default is usually fine), you will be asked to pre-configure available commands.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338343" alt="EndUser_Installing_PreConfigureCommands.png" title="EndUser_Installing_PreConfigureCommands.png" /&gt;&lt;br /&gt;&lt;sup&gt;Choosing which commands are available during installation&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;The choice you make on this page will determine the &amp;quot;commands&amp;quot; that will be visible in the Path Copy Copy contextual submenu. The default choice, &amp;quot;commonly-used commands only&amp;quot;, will probably be sufficient for most users. Please note that whatever choice you pick, you can always go back later and change the commands in the settings application. &lt;b&gt;Note:&lt;/b&gt; this page will not appear if you are upgrading from a previous version.&lt;br /&gt;&lt;br /&gt;After the wizard finishes, setup simply disappears and Path Copy Copy is ready for use.&lt;br /&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
Using Path Copy Copy is also simple. Simply right-click on a file, folder or group of files in the Windows Explorer&amp;#39;s window and the contextual menu that shows up will now include two things: a Path Copy Copy &lt;b&gt;default command&lt;/b&gt; as well as a submenu containing &lt;b&gt;all commands available&lt;/b&gt;. The submenu will also include an item to open the &lt;b&gt;settings&lt;/b&gt;. (Note that the commands found in the submenu depend on the choice made during installation.)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297071" alt="EndUser_Usage_MenuItems.png" title="EndUser_Usage_MenuItems.png" /&gt;&lt;br /&gt;&lt;sup&gt;The various parts of Path Copy Copy&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;Selecting the default command will copy the selected file&amp;#39;s full path to the clipboard. Other path formats are available by selecting them from the submenu:
&lt;ul&gt;&lt;li&gt;Just the file&amp;#39;s &lt;b&gt;name&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Short&lt;/b&gt; path format, which corresponds to the old MS-DOS 8.3 format. Note that this format guarantees that the path contains no spaces.&lt;/li&gt;
&lt;li&gt;The file&amp;#39;s &lt;b&gt;parent folder&lt;/b&gt; path (useful to quickly navigate to that folder).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;UNC&lt;/b&gt; paths, also known as network paths - useful if you have mapped network drives or files to share with others over a corporate network.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Internet&lt;/b&gt; path, using the file:// protocol and with escaped whitespaces - useful to open the file in a Web Browser.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Unix&lt;/b&gt; and &lt;b&gt;Cygwin&lt;/b&gt; paths, using forward slashes (/) instead of backslashes (\) to separate directories - useful if you&amp;#39;re using Unix utilities.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Options&lt;/h2&gt;
Choosing the &lt;i&gt;Settings&lt;/i&gt; item in Path Copy Copy&amp;#39;s submenu will launch an application allowing you to customize some of Path Copy Copy&amp;#39;s behavior. This application has a tabbed interface and three buttons at the bottom. To edit the settings and save, press either the &lt;b&gt;Apply&lt;/b&gt; or &lt;b&gt;OK&lt;/b&gt; button. To close without saving changes to the settings, press the &lt;b&gt;Cancel&lt;/b&gt; button.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; it&amp;#39;s possible that the Settings item is not present if Path Copy Copy has been installed by your network administrator and its settings have been locked.
&lt;h4&gt;Commands tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338884" alt="EndUser_Options_CommandsTab.png" title="EndUser_Options_CommandsTab.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab allows you to choose which commands will be shown in Explorer&amp;#39;s &lt;b&gt;main contextual menu&lt;/b&gt; and the Path Copy Copy &lt;b&gt;submenu&lt;/b&gt;. By default, the &lt;b&gt;Copy Long Path&lt;/b&gt; command is shown in the main menu and other commands are shown in the submenu (depending on the choice made during installation). The checkboxes next to each command in the list allows you to change the default layout.&lt;br /&gt;&lt;br /&gt;A command can show up both in the main menu and the submenu. Unchecking both checkboxes will cause the command to not show up at all; useful for commands that are not useful to a specific user.&lt;br /&gt;
&lt;h4&gt;Custom Commands tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338885" alt="EndUser_Options_CustomCommandsTab.png" title="EndUser_Options_CustomCommandsTab.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab allows you to configure &lt;b&gt;custom commands&lt;/b&gt; that can decide how the path will be copied to the clipboard. This tab contains a list of all existing custom commands as well as several buttons to manipulate them. The &lt;i&gt;Move Up&lt;/i&gt; and &lt;i&gt;Move Down&lt;/i&gt; buttons allow you to organize the custom commands in the order you see fit. The &lt;i&gt;New&lt;/i&gt; button will open another dialog to create a custom command (see below). The &lt;i&gt;Edit&lt;/i&gt; button allows you to modify the behavior of an existing custom command. Finally, the &lt;i&gt;Remove&lt;/i&gt; button allows you to remove custom commands from the available commands.&lt;br /&gt;&lt;br /&gt;Once defined, custom commands can be configured to appear in the main menu or submenu, from the &lt;i&gt;Commands&lt;/i&gt; tab. Also note that custom commands are &lt;i&gt;user-specific&lt;/i&gt; - each user account has its own custom commands (except if some are pre-installed by your network administrator).&lt;br /&gt;
&lt;h4&gt;Advanced tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338883" alt="EndUser_Options_AdvancedTab.png" title="EndUser_Options_AdvancedTab.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab contains checkboxes for the following options:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Add quotes around copied paths:&lt;/b&gt; Paths copied will be surrounded by quotes (&amp;quot;).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use hidden shares when copying UNC paths:&lt;/b&gt; Hidden shares are those ending with a dollar sign ($). Creating such a share means it won&amp;#39;t show up when other network users look for shares on your machine, but if someone knows the share name, it can be used to access the share. By default, Path Copy Copy does not consider such shares when looking for a share path for a file. If this is selected, hidden shares will be considered. Please note that this also includes administrative shares (\\computername\C$, for example).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Always show submenu:&lt;/b&gt; Selected by default, this option makes it so that Path Copy Copy&amp;#39;s submenu is always shown in the shell&amp;#39;s contextual menu. If this is deselected, you will need to hold down the Shift key while right-clicking on a file to see the submenu.&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;Custom Command dialog box&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313335" alt="EndUser_CustomCommand_Tab1.png" title="EndUser_CustomCommand_Tab1.png" /&gt;&lt;br /&gt;&lt;br /&gt;This dialog, spawned by either the &lt;i&gt;New&lt;/i&gt; or &lt;i&gt;Edit&lt;/i&gt; buttons of the &lt;i&gt;Custom Commands&lt;/i&gt; tab of the settings application, allows you to configure the behavior of a custom command. Each custom command can be given a &lt;b&gt;name&lt;/b&gt; that will be used to display the command in the Path Copy Copy menus. Next, there are two steps to configuring the custom command.&lt;br /&gt;
&lt;h6&gt;Choosing a base command&lt;/h6&gt;
The first step that a custom command will perform when computing the path is call an existing &lt;b&gt;base command&lt;/b&gt;. For example, you may want your custom command to modify the normal output of the &lt;i&gt;UNC Path&lt;/i&gt; command. To choose the base command, simply select it in the listbox that is located in the &lt;i&gt;Base Command&lt;/i&gt; tab of the dialog box.&lt;br /&gt;
&lt;h6&gt;Configuring options&lt;/h6&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313336" alt="EndUser_CustomCommand_Tab2.png" title="EndUser_CustomCommand_Tab2.png" /&gt;&lt;br /&gt;&lt;br /&gt;The second tab of the dialog box, named &lt;i&gt;Options&lt;/i&gt;, can be used to alter the path that will be copied to the clipboard when the custom command is invoked. There are several options to choose from.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Enclose path in quotation marks:&lt;/b&gt; As the checkbox says, this will cause the path to be surrounded by quotes. Note: if you also choose this option globally, there will be two pair of quotes around the path!&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Change slashes:&lt;/b&gt; Causes all forward slashes ( / ) in the path to be converted to backslashes ( \ ), or vice-versa.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Find / Replace:&lt;/b&gt; Will perform a find/replace operation in the path, replacing all instances of the text entered in the &lt;i&gt;Find what&lt;/i&gt; edit box with the text in the &lt;i&gt;Replace with&lt;/i&gt; edit box.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Once you are satisfied with your configuration, press the &lt;i&gt;OK&lt;/i&gt; button at the bottom of the dialog box to save the custom command. You can cancel the creation/editing by pressing the &lt;i&gt;Cancel&lt;/i&gt; button.&lt;br /&gt;
&lt;h2&gt;Questions? Issues?&lt;/h2&gt;
This concludes the little End-User documentation for Path Copy Copy. If you have a question regarding any aspect of the software, you can post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions"&gt;Discussions&lt;/a&gt;&lt;/b&gt; section. If you have an issue (either because of a bug, a feature not working as it should or even a feature you would like to see implemented), do not hesitate to enter a work item in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/workitem/list/basic"&gt;Issue Tracker&lt;/a&gt;&lt;/b&gt;. If the information you were looking for is not here, you can try to look in the two other subsections, &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Documentation"&gt;Network Administrator&lt;/a&gt; and &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Documentation"&gt;Developer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;sub&gt;Last updated for version 9.2&lt;/sub&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Wed, 09 May 2012 20:05:48 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20120509080548P</guid></item><item><title>Updated Wiki: Home</title><link>http://pathcopycopy.codeplex.com/wikipage?version=26</link><description>&lt;div class="wikidoc"&gt;A Windows Explorer add-on that adds a contextual menu item on all files and folders allowing the user to copy the path in various formats. Idea copied from &amp;#34;Path Copy&amp;#34;.&lt;br /&gt;&lt;br /&gt;Works on Windows XP or later, both 32-bit and 64-bit versions.&lt;br /&gt;&lt;div style="text-align:right;float:right;"&gt;&lt;a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&amp;amp;business=LM5B9WNTH4KN4&amp;amp;lc=CA&amp;amp;item_name=Charles%20Lechasseur&amp;amp;item_number=PathCopyCopy&amp;amp;currency_code=CAD&amp;amp;bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted"&gt;&lt;img style="border:none;" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" alt="If you use Path Copy Copy and like it, please consider donating!" title="If you use Path Copy Copy and like it, please consider donating!" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=248790" alt="PathCopyCopyContextualMenu.png" title="PathCopyCopyContextualMenu.png" /&gt;&lt;br /&gt;&lt;sup&gt;The Path Copy Copy contextual menu items.&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;The extension has a modular architecture where each menu item in the sub-menu is actually a &lt;i&gt;Plugin&lt;/i&gt;.&lt;br /&gt;Custom plugins are supported using COM - plugin developers should check out the &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Home"&gt;Documentation&lt;/a&gt; section for details.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Note to reviewers&lt;/u&gt;: I cannot reply to review comments so I have created a discussion topic to do it. If you&amp;#39;ve asked some questions in a review comment, please see &lt;a href="http://pathcopycopy.codeplex.com/discussions/60179"&gt;this discussion thread&lt;/a&gt;.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Wed, 09 May 2012 20:03:03 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20120509080303P</guid></item><item><title>Updated Wiki: Developer</title><link>http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;version=23</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;&lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Developer"&gt;End-User&lt;/a&gt;  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Developer"&gt;Network Administrator&lt;/a&gt;  |  Developer&lt;/h5&gt;&lt;hr /&gt;
This subsection of the documentation is aimed at software developers interested in Path Copy Copy. It is divided into two parts: developers looking to build Path Copy Copy from source, and developers looking to create their own Path Copy Copy commands (also known as &lt;b&gt;plugins&lt;/b&gt;).&lt;br /&gt;
&lt;h2&gt;Getting the source&lt;/h2&gt;
Path Copy Copy uses &lt;b&gt;&lt;a href="http://mercurial.selenic.com/" class="externalLink"&gt;Mercurial&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; for its source control. For those of you not familiar with it, Mercurial is a distributed version control system - this means that each developer has a full copy of the repository on his/her machine. (&lt;a href="http://hginit.com/" class="externalLink"&gt;HgInit&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; might also be a good place to start if you&amp;#39;re new to Mercurial.)&lt;br /&gt;&lt;br /&gt;There are two ways to get the source for Path Copy Copy in order to build it. The first one is to use a Mercurial client to &lt;b&gt;clone&lt;/b&gt; the Path Copy Copy repository. The clone URL to use is &lt;b&gt;https://hg01.codeplex.com/pathcopycopy&lt;/b&gt;. You can use any Mercurial client to do this. On Windows, &lt;a href="http://tortoisehg.bitbucket.org/" class="externalLink"&gt;TortoiseHg&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; is a popular graphical Mercurial client that works well.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297461" alt="Developer_GettingTheSource_CloneRepoTortoiseHg.png" title="Developer_GettingTheSource_CloneRepoTortoiseHg.png" /&gt;
&lt;h6&gt;Cloning the Path Copy Copy repository with TortoiseHg&lt;/h6&gt;
&lt;br /&gt;Once the clone operation completes, you can go in your chosen destination folder and see all Path Copy Copy project files.&lt;br /&gt;&lt;br /&gt;The second way to get the source is to download a pre-packaged revision. You can do so by going to the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/SourceControl/list/changesets" class="externalLink"&gt;Source Code&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; tab and click on the Download link just under &lt;b&gt;Latest Version&lt;/b&gt; on the right-hand side. After agreeing to the license, you will be able to download a complete version of the Path Copy Copy project files as a ZIP archive. Simply unzip it anywhere to be able to use it.&lt;br /&gt;&lt;br /&gt;Whatever mean you choose to get the source, once you have it, you should probably read the README.TXT in the root directory. This file is a quick list of most other files in the Path Copy Copy source tree and is aimed at developers to read.&lt;br /&gt;
&lt;h2&gt;Building the shell extension&lt;/h2&gt;
Path Copy Copy has been developed using &lt;b&gt;Microsoft Visual Studio&lt;/b&gt;. Although it might be possible to adapt the source to build it with another tool, it has never been attempted. Make sure you meet the minimum prerequisites listed on the right before you attempt to build any part of the source.&lt;br /&gt;&lt;br /&gt;Path Copy Copy is divided into two components, each with its own Visual Studio solution: the shell extension (responsible for adding the menu items in the shell&amp;#39;s contextual menu) and the settings application (launched with the user chooses &lt;i&gt;Settings&lt;/i&gt; in the menu - see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Developer"&gt;End-User tab&lt;/a&gt;). In order to build the shell extension, open the &lt;b&gt;PathCopyCopy.sln&lt;/b&gt; file.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297466" alt="Developer_BuildingShellExt_PathCopyCopySln.png" title="Developer_BuildingShellExt_PathCopyCopySln.png" /&gt;
&lt;h6&gt;The PathCopyCopy solution&lt;/h6&gt;
&lt;br /&gt;This solution contains two projects: &lt;b&gt;PathCopyCopy&lt;/b&gt; and &lt;b&gt;TestPlugins&lt;/b&gt;. The second project simply contains plugin implementations used for testing purposes and are never shipped with Path Copy Copy. Thus, this project is out of the scope of this documentation. Feel free to examine it if you want.&lt;br /&gt;&lt;br /&gt;The Path Copy Copy shell extension is written in C++ and uses ATL. It is made of several different source files. Although this documentation won&amp;#39;t dig into the structure of the code itself, feel free to do so on your own if you want to learn how Path Copy Copy works (especially the &lt;i&gt;PathCopyCopyContextMenuExt&lt;/i&gt; class and the various &lt;i&gt;Plugins&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;The PathCopyCopy project has two configurations, &lt;b&gt;Debug&lt;/b&gt; and &lt;b&gt;Release&lt;/b&gt;, as well as two platforms, &lt;b&gt;Win32&lt;/b&gt; and &lt;b&gt;x64&lt;/b&gt;. The Debug configuration should only be needed if you intend to trace into the Path Copy Copy code, so most likely, you will want to select Release. Also, it is important that each version of Path Copy Copy is built in &lt;b&gt;32-bit&lt;/b&gt; (Win32 platform) and &lt;b&gt;64-bit&lt;/b&gt; (x64 platform) formats, so as to be able to run on any system.&lt;br /&gt;&lt;br /&gt;Once you are ready to build the shell extension, simply choose &lt;i&gt;Batch Build...&lt;/i&gt; under the Build menu, check both &lt;i&gt;Release|Win32&lt;/i&gt; and &lt;i&gt;Release|x64&lt;/i&gt; solution config of the PathCopyCopy project, and click &lt;b&gt;Build&lt;/b&gt;. Building should not take long depending on the speed of your computer.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297471" alt="Developer_BuildingShellExt_BatchBuilding.png" title="Developer_BuildingShellExt_BatchBuilding.png" /&gt;
&lt;h6&gt;Using Batch Build to build both versions of PathCopyCopy&lt;/h6&gt;
&lt;br /&gt;The output files, including the final &lt;b&gt;PathCopyCopy.dll&lt;/b&gt;, are written in the &lt;i&gt;bin&lt;/i&gt; directory under the root source directory. Object files will be in the &lt;i&gt;obj&lt;/i&gt; directory, next to bin. Note that the build mechanism will automatically &lt;i&gt;register&lt;/i&gt; the DLL, as the shell extension is a COM object.&lt;br /&gt;
&lt;h2&gt;Building the settings application&lt;/h2&gt;
When the user selects the &lt;i&gt;Settings...&lt;/i&gt; item in the Path Copy Copy submenu, the shell extension launches the &lt;b&gt;Settings application&lt;/b&gt; to let the user modify the options. This application has its own Visual Studio solution named &lt;b&gt;PathCopyCopySettings.sln&lt;/b&gt;. This solution contains a single project that is written in C# and targets .NET Framework 2.0.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297472" alt="Developer_BuildingSettingsApp_PathCopyCopySettingsSln.png" title="Developer_BuildingSettingsApp_PathCopyCopySettingsSln.png" /&gt;
&lt;h6&gt;The PathCopyCopySettings solution&lt;/h6&gt;
&lt;br /&gt;The Settings project is a &lt;b&gt;Windows Forms&lt;/b&gt; project whose central source file is named &lt;b&gt;MainForm&lt;/b&gt;. The other source files contain code to deal with the user settings and plugins. Again, this documentation won&amp;#39;t dig into the code. Feel free to explorer if you want to see how settings are changed.&lt;br /&gt;&lt;br /&gt;The PathCopyCopySettings solution again has two configurations, &lt;b&gt;Debug&lt;/b&gt; and &lt;b&gt;Release&lt;/b&gt;, but a single platform named &lt;b&gt;AnyCPU&lt;/b&gt;. This is because a .NET application is platform-agnostic by default. In our case, it will run as a 32-bit application if the user is on a 32-bit system, and as a 64-bit application if on a 64-bit system. Again, the Debug configuration is only needed to trace in the code, so Release should be used in most circumstances.&lt;br /&gt;&lt;br /&gt;Once you are ready to build the settings application, select &lt;b&gt;Release&lt;/b&gt; from the configuration dropdown and &lt;b&gt;Build Solution&lt;/b&gt; from the &lt;i&gt;Build&lt;/i&gt; menu. The output and object files will be saved in the same place as the shell extension project&amp;#39;s, alongside those files. Please note that although the project is platform-agnostic, it is first built in &lt;b&gt;Win32&lt;/b&gt; and then a post-build step is used to copy it to &lt;b&gt;x64&lt;/b&gt; so that both versions of the shell extension will be successfully able to find the application. The application file is named &lt;b&gt;PathCopyCopySettings.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;After both projects have been built, Path Copy Copy should be ready to use. Since the COM object has been registered after building, simply right-clicking on a file or folder should show up the Path Copy Copy menu items.&lt;br /&gt;
&lt;h2&gt;Building the installer&lt;/h2&gt;
For those who may need to modify Path Copy Copy and redistribute the modified version, building the installer may be needed. Path Copy Copy&amp;#39;s setup has been built using the &lt;b&gt;&lt;a href="http://www.jrsoftware.org/isinfo.php" class="externalLink"&gt;Inno Setup&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; tool. In order to build the installer, make sure you have Inno Setup installed. You also need the Inno Setup Preprocessor, a free add-on. The simplest way to get it all in one package is to use the &lt;b&gt;QuickStart Pack&lt;/b&gt; (see the &lt;a href="http://www.jrsoftware.org/isdl.php" class="externalLink"&gt;Inno Setup download page&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Building the Path Copy Copy setup is easy. Simply open the &lt;b&gt;Setup.iss&lt;/b&gt; file located in the &lt;i&gt;Installer&lt;/i&gt; directory under the root source directory and choose &lt;b&gt;Compile&lt;/b&gt; from the Inno Setup Compiler toolbar. (Note that if you installed InnoIDE using the QuickStart Pack, it will open instead of the Inno Setup Compiler. The same &lt;i&gt;Compile&lt;/i&gt; command exists in its toolbar, however, and works the same way.)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297572" alt="Developer_BuildingInstaller_CompilingIsc.png" title="Developer_BuildingInstaller_CompilingIsc.png" /&gt;
&lt;h6&gt;Compiling the Path Copy Copy setup using Inno Setup Compiler&lt;/h6&gt;
&lt;br /&gt;Once the compilation completes, go back to the &lt;i&gt;Installer&lt;/i&gt; directory and a new directory named &lt;b&gt;Output&lt;/b&gt; will have been created. It will contain the setup application, named &lt;b&gt;PathCopyCopy&lt;i&gt;VersionNumber&lt;/i&gt;.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;This concludes the documentation to build Path Copy Copy from source. Those of you wishing to develop custom plugins can continue to the next section.&lt;br /&gt;
&lt;h2&gt;Plugin development&lt;/h2&gt;
Path Copy Copy has been designed with a modular architecture. Each command seen in the contextual menu is called a &lt;b&gt;plugin&lt;/b&gt; internally. It is possible to create and distribute custom plugins in the form of &lt;b&gt;COM objects&lt;/b&gt; implementing custom Path Copy Copy interfaces. In this chapter, the sample C++ plugin project will be shown, but it should be possible to write custom plugins in any programming language using any environment, as long as it supports COM object development.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note&lt;/b&gt;: it is assumed here that you are familiar with the C++ language and the development of COM objects using the ATL library. Learning to do this is outside the scope of this documentation. Please refer to web tutorials for more information.&lt;br /&gt;&lt;br /&gt;Path Copy Copy ships with a sample Visual C++ project that implements a complete plugin. There are two places where it can be found:
&lt;ul&gt;&lt;li&gt;In Path Copy Copy&amp;#39;s installation directory, under &lt;i&gt;Samples\Plugins\COM\C++&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;In Path Copy Copy&amp;#39;s source tree, under &lt;i&gt;Samples\SampleCOMPluginCpp&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt;
The sample comes with a Visual Studio 2008 solution containing a single project, itself containing only one important class named &lt;b&gt;SamplePathCopyCopyPlugin&lt;/b&gt;. It also uses a file named &lt;b&gt;PathCopyCopy_i.h&lt;/b&gt; that is very important as it contains the definintions of Path Copy Copy&amp;#39;s custom interfaces.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297577" alt="Developer_PluginDevelopment_SampleCOMCppProject.png" title="Developer_PluginDevelopment_SampleCOMCppProject.png" /&gt;
&lt;h6&gt;The sample C++ COM plugin project&lt;/h6&gt;
&lt;br /&gt;Opening &lt;i&gt;SamplePathCopyCopyPlugin.h&lt;/i&gt; will display the declaration of the COM plugin class. In order to showcase them all, the class implements all three Path Copy Copy interfaces.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297726" alt="Developer_PluginDevelopment_SampleClassIntf.png" title="Developer_PluginDevelopment_SampleClassIntf.png" /&gt;
&lt;h6&gt;The sample plugin class&amp;#39; declaration with the Path Copy Copy interfaces&lt;/h6&gt;
&lt;br /&gt;In order to be usable by Path Copy Copy, your plugin COM object needs to implement at least the &lt;b&gt;IPathCopyCopyPlugin&lt;/b&gt; interface. The other interfaces are optional and can be implemented only if needed.
&lt;h4&gt;IPathCopyCopyPlugin interface&lt;/h4&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// IPathCopyCopyPlugin interface&lt;/span&gt;
    STDMETHOD(get_Description)(BSTR *p_ppDescription);
    STDMETHOD(get_HelpText)(BSTR *p_ppHelpText);
    STDMETHOD(GetPath)(BSTR p_pPath, BSTR *p_ppNewPath);
&lt;/pre&gt;&lt;/div&gt;Base interface that is required for all Path Copy Copy plugins. In contains three methods:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;get_Description:&lt;/b&gt; Must return the plugin&amp;#39;s description string. Will be displayed in the contextual menu to identify the plugin.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get_HelpText:&lt;/b&gt; Can return a help text that will be shown in the shell&amp;#39;s status bar when the cursor hovers over the plugin&amp;#39;s contextual menu item. It is legal to return &lt;span class="codeInline"&gt;NULL&lt;/span&gt; or an empty string for this.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GetPath:&lt;/b&gt; Main work method invoked by Path Copy Copy when it needs to get the path for a particular file or folder. This method can be called repeatedly if the user selected a group of files. It receives the full path to the file as input and must return a path, modified as needed.&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;IPathCopyCopyPluginGroupInfo interface&lt;/h4&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// IPathCopyCopyPluginGroupInfo interface&lt;/span&gt;
    STDMETHOD(get_GroupId)(ULONG *p_pGroupId);
    STDMETHOD(get_GroupPosition)(ULONG *p_pPosition);
&lt;/pre&gt;&lt;/div&gt;Optional interface that can be implemented when working on a group of plugins so that they are kept next to each other in the contextual menu. If this interface is not implemented, all custom plugins end up in the same &amp;quot;group&amp;quot; in the menu. This interface allows plugins to group together and determine ordering. It contains two methods:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;get_GroupId:&lt;/b&gt; Must return the &lt;b&gt;group ID&lt;/b&gt; (see below) of the group of plugins to which this plugin belongs to. All plugins with the same group ID will appear in the same block in the contextual menu, surrounded by separators.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get_GroupPosition:&lt;/b&gt; Must return the zero-based position of the plugin within the group. Path Copy Copy will display plugins in ascending order of group position when displaying the group.&lt;/li&gt;&lt;/ul&gt;
Plugin groups are identified by an &lt;b&gt;ID&lt;/b&gt; that is a 32-bit unsigned integer. Since there is no real way to know which IDs are already in use, developers are encouraged to specify their group ID using a four-char code, like this:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    STDMETHODIMP MyPlugin::get_GroupId(ULONG *p_pGroupId)
    {
        *p_pGroupId = &amp;#39;MYGP&amp;#39;;
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; S_OK;
    }
&lt;/pre&gt;&lt;/div&gt;Furthermore, group IDs composed of all lowercase letters are considered &lt;b&gt;reserved&lt;/b&gt; for internal use.&lt;br /&gt;
&lt;h4&gt;IPathCopyCopyStateInfo interface&lt;/h4&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// IPathCopyCopyPluginStateInfo&lt;/span&gt;
    STDMETHOD(Enabled)(BSTR p_pParentPath, BSTR p_pFile, VARIANT_BOOL *p_pEnabled);
&lt;/pre&gt;&lt;/div&gt;Optional interface that allows a plugin to specify its state in the contextual menu. It contains a single method:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Enabled:&lt;/b&gt; Called when the contextual menu is built to know if the plugin&amp;#39;s entry should be enabled or not. The method receives two information to decide: the &lt;b&gt;path of a file&lt;/b&gt; that was selected by the user, and the &lt;b&gt;path of its parent directory&lt;/b&gt;. In order to be disabled, the method must return &lt;span class="codeInline"&gt;S_OK&lt;/span&gt; and set the &lt;span class="codeInline"&gt;VARIANT_BOOL&lt;/span&gt; parameter to &lt;span class="codeInline"&gt;VARIANT_FALSE&lt;/span&gt;; any other combination of results will leave the plugin enabled.&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;Plugin registration&lt;/h4&gt;
Once your plugin has been developed, it needs to be registered as a COM object as well as with Path Copy Copy. In order to do this, the Path Copy Copy contextual menu extension COM object includes two methods to &lt;b&gt;register&lt;/b&gt; and &lt;b&gt;unregister&lt;/b&gt; a plugin. One place to do this is in the &lt;i&gt;DllRegisterServer&lt;/i&gt; override of your ATL module.&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// In dllmain.h&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;class&lt;/span&gt; CMyModule : &lt;span style="color:Blue;"&gt;public&lt;/span&gt; CAtlDllModuleT&amp;lt; CMyModule &amp;gt;
    {
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; :
        DECLARE_LIBID(...)
        DECLARE_REGISTRY_APPID_RESOURCEID(...)

        HRESULT DllRegisterServer(BOOL bRegTypeLib = TRUE) &lt;span style="color:Blue;"&gt;throw&lt;/span&gt;();
        HRESULT DllUnregisterServer(BOOL bUnRegTypeLib = TRUE) &lt;span style="color:Blue;"&gt;throw&lt;/span&gt;();
    };
&lt;/pre&gt;&lt;/div&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
    &lt;span style="color:Green;"&gt;// In dllmain.cpp&lt;/span&gt;
    HRESULT CMyModule::DllRegisterServer( BOOL bRegTypeLib &lt;span style="color:Green;"&gt;/*= TRUE*/&lt;/span&gt; ) &lt;span style="color:Blue;"&gt;throw&lt;/span&gt;()
    {
        HRESULT hRes = CAtlDllModuleT&amp;lt; CMyModule &amp;gt;::DllRegisterServer(bRegTypeLib);
        &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (SUCCEEDED(hRes)) {
            CComPtr&amp;lt;IPathCopyCopyContextMenuExt&amp;gt; cpPccExt;
            hRes = cpPccExt.CoCreateInstance(__uuidof(PathCopyCopyContextMenuExt));
            &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (SUCCEEDED(hRes)) {
                cpPccExt-&amp;gt;RegisterPlugin(__uuidof(MyPlugin));
            }
        }
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; hRes;
    }

    HRESULT CMyModule::DllUnregisterServer( BOOL bUnRegTypeLib &lt;span style="color:Green;"&gt;/*= TRUE*/&lt;/span&gt; ) &lt;span style="color:Blue;"&gt;throw&lt;/span&gt;()
    {
        HRESULT hRes = CAtlDllModuleT&amp;lt; CMyModule &amp;gt;::DllUnregisterServer(bUnRegTypeLib);
        &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (SUCCEEDED(hRes)) {
            CComPtr&amp;lt;IPathCopyCopyContextMenuExt&amp;gt; cpPccExt;
            hRes = cpPccExt.CoCreateInstance(__uuidof(PathCopyCopyContextMenuExt));
            &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (SUCCEEDED(hRes)) {
                cpPccExt-&amp;gt;UnregisterPlugin(__uuidof(MyPlugin));
            }
        }
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; hRes;
    }
&lt;/pre&gt;&lt;/div&gt;&lt;b&gt;IMPORTANT NOTE:&lt;/b&gt; Please do &lt;b&gt;NOT&lt;/b&gt; try to reverse-engineer Path Copy Copy&amp;#39;s plugin registration internals and how plugins are saved. This is not guaranteed to be stable from version to version. The registration interface, however, is guaranteed to always exist.&lt;br /&gt;
&lt;h2&gt;Questions?&lt;/h2&gt;
This concludes the developer documentation for Path Copy Copy. If you have further questions regarding any aspect of development (the source, the build system, plugin development, etc.) please don&amp;#39;t hesitate to post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions" class="externalLink"&gt;Discussions&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; section.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;sub&gt;Last updated for version 9.2&lt;/sub&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Sat, 11 Feb 2012 15:53:44 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Developer 20120211035344P</guid></item><item><title>Updated Wiki: Network Administrator</title><link>http://pathcopycopy.codeplex.com/wikipage?title=Network Administrator&amp;version=13</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;&lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User&lt;/a&gt;  |  Network Administrator  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Network%20Administrator"&gt;Developer&lt;/a&gt;&lt;/h5&gt;&lt;hr /&gt;
This subsection of the documentation is aimed at network administrators looking to preinstall or remotely install Path Copy Copy on their users&amp;#39; computer. The Path Copy Copy installer supports several command-line options to do so, as well as to preconfigure default options.&lt;br /&gt;
&lt;h2&gt;Network installation&lt;/h2&gt;
The Path Copy Copy setup application has been built using &lt;a href="http://www.jrsoftware.org/isinfo.php" class="externalLink"&gt;Inno Setup&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and as such it supports all the standard Inno Setup &lt;b&gt;&lt;a href="http://www.jrsoftware.org/ishelp/index.php?topic=setupcmdline" class="externalLink"&gt;command-line parameters&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. Here is a non-exhaustive list of the parameters that can be useful to a network administrator. For the complete list of options please refer to the Inno Setup website.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;/SP-&lt;/b&gt; : Suppresses the &lt;i&gt;This will install Path Copy Copy...&lt;/i&gt; message at the start of the installation.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/VERYSILENT&lt;/b&gt; : Suppresses the installation and progress windows. If a reboot is needed, it is executed without asking at end of setup.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/SUPPRESSMSGBOXES&lt;/b&gt; : Suppresses all prompts, error messages, etc. during setup.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/NORESTART&lt;/b&gt; : Prevents setup from restarting the computer if a reboot was required during installation. This can be useful when installing on a computer that could be in use.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/DIR=&amp;quot;&lt;i&gt;directory path&lt;/i&gt;&amp;quot;&lt;/b&gt; : Instructs setup to install Path Copy Copy in &lt;i&gt;directory path&lt;/i&gt; instead of the default directory in Program Files.&lt;/li&gt;&lt;/ul&gt;
A combination of these command-line options should probably be sufficient for typical network installations.&lt;br /&gt;
&lt;h2&gt;Setting default options&lt;/h2&gt;
Path Copy Copy is configurable via its &lt;i&gt;Settings&lt;/i&gt; application (see the &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;) and saves its settings in the Windows registry. When it needs a value for a setting, it first looks in the user&amp;#39;s own registry key and if no value is found, it looks in a global registry key that applies to all users on the computer (in other, more technical words, it looks in HKEY_CURRENT_USER first, then in HKEY_LOCAL_MACHINE). The Path Copy Copy setup allows you to configure default values for any setting by using command-line parameters:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;/PCCREGVALUEDWORD=&amp;quot;&lt;i&gt;name&lt;/i&gt;,&lt;i&gt;value&lt;/i&gt;&amp;quot;&lt;/b&gt; : Instructs setup to create a registry value of type REG_DWORD named &lt;i&gt;name&lt;/i&gt; and containing the value &lt;i&gt;value&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/PCCREGVALUESZ=&amp;quot;&lt;i&gt;name&lt;/i&gt;,&lt;i&gt;value&lt;/i&gt;&amp;quot;&lt;/b&gt; : Instructs setup to create a registry value of type REG_SZ (in other words, string) named &lt;i&gt;name&lt;/i&gt; and containing the value &lt;i&gt;value&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/PCCREGPIPELINEPLUGIN=&amp;quot;&lt;i&gt;id&lt;/i&gt;,&lt;i&gt;pipeline&lt;/i&gt;,&lt;i&gt;description&lt;/i&gt;&amp;quot;:&lt;/b&gt; Instructs setup to create a &lt;i&gt;custom command&lt;/i&gt; with the information provided. See below for more details.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/PCCREGPIPELINEPLUGINSDISPLAYORDER=&amp;quot;&lt;i&gt;id&lt;/i&gt;,&lt;i&gt;id&lt;/i&gt;,...&amp;quot;:&lt;/b&gt; Instructs setup to save the display order of custom commands. The display order is a comma-separated list of custom command IDs.&lt;/li&gt;&lt;/ul&gt;
Each setting in Path Copy Copy has its own registry value name. Here is a list of all available values, their data types, accepted values and purpose.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Value name &lt;/th&gt;&lt;th&gt; Data type &lt;/th&gt;&lt;th&gt; Possible values &lt;/th&gt;&lt;th&gt; Purpose &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;AddQuotes&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (no) or &lt;b&gt;1&lt;/b&gt; (yes) &lt;/td&gt;&lt;td&gt; If set to 1, will cause Path Copy Copy to surround all copied paths with quotes (&amp;quot;). &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;UseHiddenShares&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (no) or &lt;b&gt;1&lt;/b&gt; (yes) &lt;/td&gt;&lt;td&gt; If set to 1, Path Copy Copy will use hidden shares when looking for UNC paths (see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;). &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;AlwaysShowSubmenu&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (no) or &lt;b&gt;1&lt;/b&gt; (yes) &lt;/td&gt;&lt;td&gt; If set to 0, user will have to hold down the Shift key while right-clicking on a file to get the submenu with all commands. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;PluginsInMainMenu&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_SZ &lt;/td&gt;&lt;td&gt; Comma-separated list of plugin IDs (see below) &lt;/td&gt;&lt;td&gt; IDs of the commands (or &lt;b&gt;plugins&lt;/b&gt;) that will be shown directly in the main contextual menu (see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;). &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;PluginsNotInSubmenu&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_SZ &lt;/td&gt;&lt;td&gt; Comma-separated list of plugin IDs &lt;/td&gt;&lt;td&gt; IDs of plugins that will not be shown in the submenu. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;KeyLock&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (unlocked) or &lt;b&gt;1&lt;/b&gt; (locked) &lt;/td&gt;&lt;td&gt; If set to 1, will prevent the user from changing the settings. The &lt;i&gt;Settings&lt;/i&gt; menu item will not show up in the submenu and launching the Settings application by hand will give an error message. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Some values refer to specific commands. These are called &lt;b&gt;plugins&lt;/b&gt; in Path Copy Copy speech. Each command seen in the menu has an internal &lt;i&gt;plugin ID&lt;/i&gt;. The following table lists all plugins provided by default along with their IDs.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Command &lt;/th&gt;&lt;th&gt; Plugin ID &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short Name &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {C8757DCA-1BA8-48d0-8145-B93BBB9237AF} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long Name &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {3A42B5C6-72D6-4a8a-BA44-014FA64AA11A} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {93B362D1-2B13-467a-B618-6784F24F3BA1} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {331A3B60-AF49-44f4-B30D-56ADFF6D25E8} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {0929538B-5F52-4480-9902-2BBEC9C84905} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {349939D7-780F-43fd-A98E-83D9ADD44E22} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short UNC Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {891F9E3E-0B70-49fd-A86C-53B21C6193C7} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long UNC Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {EA24BCC3-35F5-46b9-A2A5-A12A0AED2D28} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short UNC Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {73188FB3-8E14-409c-95EF-BA608FDC1274} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long UNC Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {E2C942AC-917C-4aee-A867-8F6AB960BA76} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Internet Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {8F2ADCCC-9693-407d-9300-FCCB9A12B982} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Unix Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {5B5DA5CB-3284-45a9-A1E5-4D6B03107924} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Cygwin Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {CD50DCE3-9A5C-4adf-B552-1741361567D6} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;One switch allows you to pre-install some custom commands (see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;) on the computer. These are called &lt;b&gt;pipeline plugins&lt;/b&gt; in Path Copy Copy speech. Since their serialization is a bit complex, the easiest way to do it is to create the custom command on your computer and go in the registry to fetch the values needed to pass to the setup exe. Custom commands are stored in the &lt;i&gt;SOFTWARE\clechasseur\PathCopyCopy\PipelinePlugins&lt;/i&gt; key under HKEY_CURRENT_USER. The picture below shows you the various parts needed to create the setup command-line switch.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313338" alt="NetworkAdmin_DefaultOptions_PipelinePluginInRegistry.png" title="NetworkAdmin_DefaultOptions_PipelinePluginInRegistry.png" /&gt;&lt;br /&gt;&lt;br /&gt;Please note that if you add custom commands via the setup, their IDs can also be used for any configuration value that takes a plugin ID, such as &lt;b&gt;PluginsInMainMenu&lt;/b&gt;.&lt;br /&gt;
&lt;h2&gt;Questions? Issues?&lt;/h2&gt;
This concludes the Network Administrator documentation for Path Copy Copy. If you have a question regarding any aspect of the software, you can post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions" class="externalLink"&gt;Discussions&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; section. If something is not working as documented, do not hesitate to enter a work item in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/workitem/list/basic" class="externalLink"&gt;Issue Tracker&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;sub&gt;Last updated for version 9.2&lt;/sub&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Mon, 06 Feb 2012 13:38:17 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Network Administrator 20120206013817P</guid></item><item><title>Updated Wiki: Developer</title><link>http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;version=22</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;&lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Developer"&gt;End-User&lt;/a&gt;  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Developer"&gt;Network Administrator&lt;/a&gt;  |  Developer&lt;/h5&gt;&lt;hr /&gt;
This subsection of the documentation is aimed at software developers interested in Path Copy Copy. It is divided into two parts: developers looking to build Path Copy Copy from source, and developers looking to create their own Path Copy Copy commands (also known as &lt;b&gt;plugins&lt;/b&gt;).&lt;br /&gt;
&lt;h2&gt;Getting the source&lt;/h2&gt;
Path Copy Copy uses &lt;b&gt;&lt;a href="http://mercurial.selenic.com/" class="externalLink"&gt;Mercurial&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; for its source control. For those of you not familiar with it, Mercurial is a distributed version control system - this means that each developer has a full copy of the repository on his/her machine. (&lt;a href="http://hginit.com/" class="externalLink"&gt;HgInit&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; might also be a good place to start if you&amp;#39;re new to Mercurial.)&lt;br /&gt;&lt;br /&gt;There are two ways to get the source for Path Copy Copy in order to build it. The first one is to use a Mercurial client to &lt;b&gt;clone&lt;/b&gt; the Path Copy Copy repository. The clone URL to use is &lt;b&gt;https://hg01.codeplex.com/pathcopycopy&lt;/b&gt;. You can use any Mercurial client to do this. On Windows, &lt;a href="http://tortoisehg.bitbucket.org/" class="externalLink"&gt;TortoiseHg&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; is a popular graphical Mercurial client that works well.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297461" alt="Developer_GettingTheSource_CloneRepoTortoiseHg.png" title="Developer_GettingTheSource_CloneRepoTortoiseHg.png" /&gt;
&lt;h6&gt;Cloning the Path Copy Copy repository with TortoiseHg&lt;/h6&gt;
&lt;br /&gt;Once the clone operation completes, you can go in your chosen destination folder and see all Path Copy Copy project files.&lt;br /&gt;&lt;br /&gt;The second way to get the source is to download a pre-packaged revision. You can do so by going to the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/SourceControl/list/changesets" class="externalLink"&gt;Source Code&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; tab and click on the Download link just under &lt;b&gt;Latest Version&lt;/b&gt; on the right-hand side. After agreeing to the license, you will be able to download a complete version of the Path Copy Copy project files as a ZIP archive. Simply unzip it anywhere to be able to use it.&lt;br /&gt;&lt;br /&gt;Whatever mean you choose to get the source, once you have it, you should probably read the README.TXT in the root directory. This file is a quick list of most other files in the Path Copy Copy source tree and is aimed at developers to read.&lt;br /&gt;
&lt;h2&gt;Building the shell extension&lt;/h2&gt;
Path Copy Copy has been developed using &lt;b&gt;Microsoft Visual Studio&lt;/b&gt;. Although it might be possible to adapt the source to build it with another tool, it has never been attempted. Make sure you meet the minimum prerequisites listed on the right before you attempt to build any part of the source.&lt;br /&gt;&lt;br /&gt;Path Copy Copy is divided into two components, each with its own Visual Studio solution: the shell extension (responsible for adding the menu items in the shell&amp;#39;s contextual menu) and the settings application (launched with the user chooses &lt;i&gt;Settings&lt;/i&gt; in the menu - see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Developer"&gt;End-User tab&lt;/a&gt;). In order to build the shell extension, open the &lt;b&gt;PathCopyCopy.sln&lt;/b&gt; file.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297466" alt="Developer_BuildingShellExt_PathCopyCopySln.png" title="Developer_BuildingShellExt_PathCopyCopySln.png" /&gt;
&lt;h6&gt;The PathCopyCopy solution&lt;/h6&gt;
&lt;br /&gt;This solution contains two projects: &lt;b&gt;PathCopyCopy&lt;/b&gt; and &lt;b&gt;TestPlugins&lt;/b&gt;. The second project simply contains plugin implementations used for testing purposes and are never shipped with Path Copy Copy. Thus, this project is out of the scope of this documentation. Feel free to examine it if you want.&lt;br /&gt;&lt;br /&gt;The Path Copy Copy shell extension is written in C++ and uses ATL. It is made of several different source files. Although this documentation won&amp;#39;t dig into the structure of the code itself, feel free to do so on your own if you want to learn how Path Copy Copy works (especially the &lt;i&gt;PathCopyCopyContextMenuExt&lt;/i&gt; class and the various &lt;i&gt;Plugins&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;The PathCopyCopy project has two configurations, &lt;b&gt;Debug&lt;/b&gt; and &lt;b&gt;Release&lt;/b&gt;, as well as two platforms, &lt;b&gt;Win32&lt;/b&gt; and &lt;b&gt;x64&lt;/b&gt;. The Debug configuration should only be needed if you intend to trace into the Path Copy Copy code, so most likely, you will want to select Release. Also, it is important that each version of Path Copy Copy is built in &lt;b&gt;32-bit&lt;/b&gt; (Win32 platform) and &lt;b&gt;64-bit&lt;/b&gt; (x64 platform) formats, so as to be able to run on any system.&lt;br /&gt;&lt;br /&gt;Once you are ready to build the shell extension, simply choose &lt;i&gt;Batch Build...&lt;/i&gt; under the Build menu, check both &lt;i&gt;Release|Win32&lt;/i&gt; and &lt;i&gt;Release|x64&lt;/i&gt; solution config of the PathCopyCopy project, and click &lt;b&gt;Build&lt;/b&gt;. Building should not take long depending on the speed of your computer.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297471" alt="Developer_BuildingShellExt_BatchBuilding.png" title="Developer_BuildingShellExt_BatchBuilding.png" /&gt;
&lt;h6&gt;Using Batch Build to build both versions of PathCopyCopy&lt;/h6&gt;
&lt;br /&gt;The output files, including the final &lt;b&gt;PathCopyCopy.dll&lt;/b&gt;, are written in the &lt;i&gt;bin&lt;/i&gt; directory under the root source directory. Object files will be in the &lt;i&gt;obj&lt;/i&gt; directory, next to bin. Note that the build mechanism will automatically &lt;i&gt;register&lt;/i&gt; the DLL, as the shell extension is a COM object.&lt;br /&gt;
&lt;h2&gt;Building the settings application&lt;/h2&gt;
When the user selects the &lt;i&gt;Settings...&lt;/i&gt; item in the Path Copy Copy submenu, the shell extension launches the &lt;b&gt;Settings application&lt;/b&gt; to let the user modify the options. This application has its own Visual Studio solution named &lt;b&gt;PathCopyCopySettings.sln&lt;/b&gt;. This solution contains a single project that is written in C# and targets .NET Framework 2.0.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297472" alt="Developer_BuildingSettingsApp_PathCopyCopySettingsSln.png" title="Developer_BuildingSettingsApp_PathCopyCopySettingsSln.png" /&gt;
&lt;h6&gt;The PathCopyCopySettings solution&lt;/h6&gt;
&lt;br /&gt;The Settings project is a &lt;b&gt;Windows Forms&lt;/b&gt; project whose central source file is named &lt;b&gt;MainForm&lt;/b&gt;. The other source files contain code to deal with the user settings and plugins. Again, this documentation won&amp;#39;t dig into the code. Feel free to explorer if you want to see how settings are changed.&lt;br /&gt;&lt;br /&gt;The PathCopyCopySettings solution again has two configurations, &lt;b&gt;Debug&lt;/b&gt; and &lt;b&gt;Release&lt;/b&gt;, but a single platform named &lt;b&gt;AnyCPU&lt;/b&gt;. This is because a .NET application is platform-agnostic by default. In our case, it will run as a 32-bit application if the user is on a 32-bit system, and as a 64-bit application if on a 64-bit system. Again, the Debug configuration is only needed to trace in the code, so Release should be used in most circumstances.&lt;br /&gt;&lt;br /&gt;Once you are ready to build the settings application, select &lt;b&gt;Release&lt;/b&gt; from the configuration dropdown and &lt;b&gt;Build Solution&lt;/b&gt; from the &lt;i&gt;Build&lt;/i&gt; menu. The output and object files will be saved in the same place as the shell extension project&amp;#39;s, alongside those files. Please note that although the project is platform-agnostic, it is first built in &lt;b&gt;Win32&lt;/b&gt; and then a post-build step is used to copy it to &lt;b&gt;x64&lt;/b&gt; so that both versions of the shell extension will be successfully able to find the application. The application file is named &lt;b&gt;PathCopyCopySettings.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;After both projects have been built, Path Copy Copy should be ready to use. Since the COM object has been registered after building, simply right-clicking on a file or folder should show up the Path Copy Copy menu items.&lt;br /&gt;
&lt;h2&gt;Building the installer&lt;/h2&gt;
For those who may need to modify Path Copy Copy and redistribute the modified version, building the installer may be needed. Path Copy Copy&amp;#39;s setup has been built using the &lt;b&gt;&lt;a href="http://www.jrsoftware.org/isinfo.php" class="externalLink"&gt;Inno Setup&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; tool. In order to build the installer, make sure you have Inno Setup installed. You also need the Inno Setup Preprocessor, a free add-on. The simplest way to get it all in one package is to use the &lt;b&gt;QuickStart Pack&lt;/b&gt; (see the &lt;a href="http://www.jrsoftware.org/isdl.php" class="externalLink"&gt;Inno Setup download page&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Building the Path Copy Copy setup is easy. Simply open the &lt;b&gt;Setup.iss&lt;/b&gt; file located in the &lt;i&gt;Installer&lt;/i&gt; directory under the root source directory and choose &lt;b&gt;Compile&lt;/b&gt; from the Inno Setup Compiler toolbar. (Note that if you installed InnoIDE using the QuickStart Pack, it will open instead of the Inno Setup Compiler. The same &lt;i&gt;Compile&lt;/i&gt; command exists in its toolbar, however, and works the same way.)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297572" alt="Developer_BuildingInstaller_CompilingIsc.png" title="Developer_BuildingInstaller_CompilingIsc.png" /&gt;
&lt;h6&gt;Compiling the Path Copy Copy setup using Inno Setup Compiler&lt;/h6&gt;
&lt;br /&gt;Once the compilation completes, go back to the &lt;i&gt;Installer&lt;/i&gt; directory and a new directory named &lt;b&gt;Output&lt;/b&gt; will have been created. It will contain the setup application, named &lt;b&gt;PathCopyCopy&lt;i&gt;VersionNumber&lt;/i&gt;.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;This concludes the documentation to build Path Copy Copy from source. Those of you wishing to develop custom plugins can continue to the next section.&lt;br /&gt;
&lt;h2&gt;Plugin development&lt;/h2&gt;
Path Copy Copy has been designed with a modular architecture. Each command seen in the contextual menu is called a &lt;b&gt;plugin&lt;/b&gt; internally. It is possible to create and distribute custom plugins in the form of &lt;b&gt;COM objects&lt;/b&gt; implementing custom Path Copy Copy interfaces. In this chapter, the sample C++ plugin project will be shown, but it should be possible to write custom plugins in any programming language using any environment, as long as it supports COM object development.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note&lt;/b&gt;: it is assumed here that you are familiar with the C++ language and the development of COM objects using the ATL library. Learning to do this is outside the scope of this documentation. Please refer to web tutorials for more information.&lt;br /&gt;&lt;br /&gt;Path Copy Copy ships with a sample Visual C++ project that implements a complete plugin. There are two places where it can be found:
&lt;ul&gt;&lt;li&gt;In Path Copy Copy&amp;#39;s installation directory, under &lt;i&gt;Samples\Plugins\COM\C++&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;In Path Copy Copy&amp;#39;s source tree, under &lt;i&gt;Samples\SampleCOMPluginCpp&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt;
The sample comes with a Visual Studio 2008 solution containing a single project, itself containing only one important class named &lt;b&gt;SamplePathCopyCopyPlugin&lt;/b&gt;. It also uses a file named &lt;b&gt;PathCopyCopy_i.h&lt;/b&gt; that is very important as it contains the definintions of Path Copy Copy&amp;#39;s custom interfaces.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297577" alt="Developer_PluginDevelopment_SampleCOMCppProject.png" title="Developer_PluginDevelopment_SampleCOMCppProject.png" /&gt;
&lt;h6&gt;The sample C++ COM plugin project&lt;/h6&gt;
&lt;br /&gt;Opening &lt;i&gt;SamplePathCopyCopyPlugin.h&lt;/i&gt; will display the declaration of the COM plugin class. In order to showcase them all, the class implements all three Path Copy Copy interfaces.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297726" alt="Developer_PluginDevelopment_SampleClassIntf.png" title="Developer_PluginDevelopment_SampleClassIntf.png" /&gt;
&lt;h6&gt;The sample plugin class&amp;#39; declaration with the Path Copy Copy interfaces&lt;/h6&gt;
&lt;br /&gt;In order to be usable by Path Copy Copy, your plugin COM object needs to implement at least the &lt;b&gt;IPathCopyCopyPlugin&lt;/b&gt; interface. The other interfaces are optional and can be implemented only if needed.
&lt;h4&gt;IPathCopyCopyPlugin interface&lt;/h4&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297727" alt="Developer_PluginDevelopment_IPathCopyCopyPluginIntf.png" title="Developer_PluginDevelopment_IPathCopyCopyPluginIntf.png" /&gt;
&lt;h6&gt;The IPathCopyCopyPlugin methods&lt;/h6&gt;
&lt;br /&gt;Base interface that is required for all Path Copy Copy plugins. In contains three methods:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;get_Description:&lt;/b&gt; Must return the plugin&amp;#39;s description string. Will be displayed in the contextual menu to identify the plugin.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get_HelpText:&lt;/b&gt; Can return a help text that will be shown in the shell&amp;#39;s status bar when the cursor hovers over the plugin&amp;#39;s contextual menu item. It is legal to return &lt;span class="codeInline"&gt;NULL&lt;/span&gt; or an empty string for this.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GetPath:&lt;/b&gt; Main work method invoked by Path Copy Copy when it needs to get the path for a particular file or folder. This method can be called repeatedly if the user selected a group of files. It receives the full path to the file as input and must return a path, modified as needed.&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;IPathCopyCopyPluginGroupInfo interface&lt;/h4&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297729" alt="Developer_PluginDevelopment_IPathCopyCopyGroupInfoIntf.png" title="Developer_PluginDevelopment_IPathCopyCopyGroupInfoIntf.png" /&gt;
&lt;h6&gt;The IPathCopyCopyGroupInfo methods&lt;/h6&gt;
&lt;br /&gt;Optional interface that can be implemented when working on a group of plugins so that they are kept next to each other in the contextual menu. If this interface is not implemented, all custom plugins end up in the same &amp;quot;group&amp;quot; in the menu. This interface allows plugins to group together and determine ordering. It contains two methods:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;get_GroupId:&lt;/b&gt; Must return the &lt;b&gt;group ID&lt;/b&gt; (see below) of the group of plugins to which this plugin belongs to. All plugins with the same group ID will appear in the same block in the contextual menu, surrounded by separators.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get_GroupPosition:&lt;/b&gt; Must return the zero-based position of the plugin within the group. Path Copy Copy will display plugins in ascending order of group position when displaying the group.&lt;/li&gt;&lt;/ul&gt;
Plugin groups are identified by an &lt;b&gt;ID&lt;/b&gt; that is a 32-bit unsigned integer. Since there is no real way to know which IDs are already in use, developers are encouraged to specify their group ID using a four-char code, like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
    STDMETHODIMP MyPlugin::get_GroupId(ULONG *p_pGroupId)
    {
        *p_pGroupId = &amp;#39;MYGP&amp;#39;;
        return S_OK;
    }
&lt;/pre&gt;Furthermore, group IDs composed of all lowercase letters are considered &lt;b&gt;reserved&lt;/b&gt; for internal use.&lt;br /&gt;
&lt;h4&gt;IPathCopyCopyStateInfo interface&lt;/h4&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297837" alt="Developer_PluginDevelopment_IPathCopyCopyStateInfoIntf.png" title="Developer_PluginDevelopment_IPathCopyCopyStateInfoIntf.png" /&gt;
&lt;h6&gt;The IPathCopyCopyStateInfo method&lt;/h6&gt;
&lt;br /&gt;Optional interface that allows a plugin to specify its state in the contextual menu. It contains a single method:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Enabled:&lt;/b&gt; Called when the contextual menu is built to know if the plugin&amp;#39;s entry should be enabled or not. The method receives two information to decide: the &lt;b&gt;path of a file&lt;/b&gt; that was selected by the user, and the &lt;b&gt;path of its parent directory&lt;/b&gt;. In order to be disabled, the method must return &lt;span class="codeInline"&gt;S_OK&lt;/span&gt; and set the &lt;span class="codeInline"&gt;VARIANT_BOOL&lt;/span&gt; parameter to &lt;span class="codeInline"&gt;VARIANT_FALSE&lt;/span&gt;; any other combination of results will leave the plugin enabled.&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;Plugin registration&lt;/h4&gt;
Once your plugin has been developed, it needs to be registered as a COM object as well as with Path Copy Copy. In order to do this, the Path Copy Copy contextual menu extension COM object includes two methods to &lt;b&gt;register&lt;/b&gt; and &lt;b&gt;unregister&lt;/b&gt; a plugin. One place to do this is in the &lt;i&gt;DllRegisterServer&lt;/i&gt; override of your ATL module.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
    // In dllmain.h
    class CMyModule : public CAtlDllModuleT&amp;lt; CMyModule &amp;gt;
    {
    public :
        DECLARE_LIBID(...)
        DECLARE_REGISTRY_APPID_RESOURCEID(...)

        HRESULT DllRegisterServer(BOOL bRegTypeLib = TRUE) throw();
        HRESULT DllUnregisterServer(BOOL bUnRegTypeLib = TRUE) throw();
    };
&lt;/pre&gt;&lt;pre&gt;
    // In dllmain.cpp
    HRESULT CMyModule::DllRegisterServer( BOOL bRegTypeLib /*= TRUE*/ ) throw()
    {
        HRESULT hRes = CAtlDllModuleT&amp;lt; CMyModule &amp;gt;::DllRegisterServer(bRegTypeLib);
        if (SUCCEEDED(hRes)) {
            CComPtr&amp;lt;IPathCopyCopyContextMenuExt&amp;gt; cpPccExt;
            hRes = cpPccExt.CoCreateInstance(__uuidof(PathCopyCopyContextMenuExt));
            if (SUCCEEDED(hRes)) {
                cpPccExt-&amp;gt;RegisterPlugin(__uuidof(MyPlugin));
            }
        }
        return hRes;
    }

    HRESULT CMyModule::DllUnregisterServer( BOOL bUnRegTypeLib /*= TRUE*/ ) throw()
    {
        HRESULT hRes = CAtlDllModuleT&amp;lt; CMyModule &amp;gt;::DllUnregisterServer(bUnRegTypeLib);
        if (SUCCEEDED(hRes)) {
            CComPtr&amp;lt;IPathCopyCopyContextMenuExt&amp;gt; cpPccExt;
            hRes = cpPccExt.CoCreateInstance(__uuidof(PathCopyCopyContextMenuExt));
            if (SUCCEEDED(hRes)) {
                cpPccExt-&amp;gt;UnregisterPlugin(__uuidof(MyPlugin));
            }
        }
        return hRes;
    }
&lt;/pre&gt;&lt;b&gt;IMPORTANT NOTE:&lt;/b&gt; Please do &lt;b&gt;NOT&lt;/b&gt; try to reverse-engineer Path Copy Copy&amp;#39;s plugin registration internals and how plugins are saved. This is not guaranteed to be stable from version to version. The registration interface, however, is guaranteed to always exist.&lt;br /&gt;
&lt;h2&gt;Questions?&lt;/h2&gt;
This concludes the developer documentation for Path Copy Copy. If you have further questions regarding any aspect of development (the source, the build system, plugin development, etc.) please don&amp;#39;t hesitate to post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions" class="externalLink"&gt;Discussions&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; section.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;sub&gt;Last updated for version 9.2&lt;/sub&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Mon, 06 Feb 2012 13:30:44 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Developer 20120206013044P</guid></item><item><title>Updated Wiki: Developer</title><link>http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;version=21</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;&lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Developer"&gt;End-User&lt;/a&gt;  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Developer"&gt;Network Administrator&lt;/a&gt;  |  Developer&lt;/h5&gt;&lt;hr /&gt;
This subsection of the documentation is aimed at software developers interested in Path Copy Copy. It is divided into two parts: developers looking to build Path Copy Copy from source, and developers looking to create their own Path Copy Copy commands (also known as &lt;b&gt;plugins&lt;/b&gt;).&lt;br /&gt;
&lt;h2&gt;Getting the source&lt;/h2&gt;
Path Copy Copy uses &lt;b&gt;&lt;a href="http://mercurial.selenic.com/" class="externalLink"&gt;Mercurial&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; for its source control. For those of you not familiar with it, Mercurial is a distributed version control system - this means that each developer has a full copy of the repository on his/her machine. (&lt;a href="http://hginit.com/" class="externalLink"&gt;HgInit&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; might also be a good place to start if you&amp;#39;re new to Mercurial.)&lt;br /&gt;&lt;br /&gt;There are two ways to get the source for Path Copy Copy in order to build it. The first one is to use a Mercurial client to &lt;b&gt;clone&lt;/b&gt; the Path Copy Copy repository. The clone URL to use is &lt;b&gt;https://hg01.codeplex.com/pathcopycopy&lt;/b&gt;. You can use any Mercurial client to do this. On Windows, &lt;a href="http://tortoisehg.bitbucket.org/" class="externalLink"&gt;TortoiseHg&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; is a popular graphical Mercurial client that works well.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297461" alt="Developer_GettingTheSource_CloneRepoTortoiseHg.png" title="Developer_GettingTheSource_CloneRepoTortoiseHg.png" /&gt;
&lt;h6&gt;Cloning the Path Copy Copy repository with TortoiseHg&lt;/h6&gt;
&lt;br /&gt;Once the clone operation completes, you can go in your chosen destination folder and see all Path Copy Copy project files.&lt;br /&gt;&lt;br /&gt;The second way to get the source is to download a pre-packaged revision. You can do so by going to the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/SourceControl/list/changesets" class="externalLink"&gt;Source Code&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; tab and click on the Download link just under &lt;b&gt;Latest Version&lt;/b&gt; on the right-hand side. After agreeing to the license, you will be able to download a complete version of the Path Copy Copy project files as a ZIP archive. Simply unzip it anywhere to be able to use it.&lt;br /&gt;&lt;br /&gt;Whatever mean you choose to get the source, once you have it, you should probably read the README.TXT in the root directory. This file is a quick list of most other files in the Path Copy Copy source tree and is aimed at developers to read.&lt;br /&gt;
&lt;h2&gt;Building the shell extension&lt;/h2&gt;
Path Copy Copy has been developed using &lt;b&gt;Microsoft Visual Studio&lt;/b&gt;. Although it might be possible to adapt the source to build it with another tool, it has never been attempted. Make sure you meet the minimum prerequisites listed on the right before you attempt to build any part of the source.&lt;br /&gt;&lt;br /&gt;Path Copy Copy is divided into two components, each with its own Visual Studio solution: the shell extension (responsible for adding the menu items in the shell&amp;#39;s contextual menu) and the settings application (launched with the user chooses &lt;i&gt;Settings&lt;/i&gt; in the menu - see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Developer"&gt;End-User tab&lt;/a&gt;). In order to build the shell extension, open the &lt;b&gt;PathCopyCopy.sln&lt;/b&gt; file.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297466" alt="Developer_BuildingShellExt_PathCopyCopySln.png" title="Developer_BuildingShellExt_PathCopyCopySln.png" /&gt;
&lt;h6&gt;The PathCopyCopy solution&lt;/h6&gt;
&lt;br /&gt;This solution contains two projects: &lt;b&gt;PathCopyCopy&lt;/b&gt; and &lt;b&gt;TestPlugins&lt;/b&gt;. The second project simply contains plugin implementations used for testing purposes and are never shipped with Path Copy Copy. Thus, this project is out of the scope of this documentation. Feel free to examine it if you want.&lt;br /&gt;&lt;br /&gt;The Path Copy Copy shell extension is written in C++ and uses ATL. It is made of several different source files. Although this documentation won&amp;#39;t dig into the structure of the code itself, feel free to do so on your own if you want to learn how Path Copy Copy works (especially the &lt;i&gt;PathCopyCopyContextMenuExt&lt;/i&gt; class and the various &lt;i&gt;Plugins&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;The PathCopyCopy project has two configurations, &lt;b&gt;Debug&lt;/b&gt; and &lt;b&gt;Release&lt;/b&gt;, as well as two platforms, &lt;b&gt;Win32&lt;/b&gt; and &lt;b&gt;x64&lt;/b&gt;. The Debug configuration should only be needed if you intend to trace into the Path Copy Copy code, so most likely, you will want to select Release. Also, it is important that each version of Path Copy Copy is built in &lt;b&gt;32-bit&lt;/b&gt; (Win32 platform) and &lt;b&gt;64-bit&lt;/b&gt; (x64 platform) formats, so as to be able to run on any system.&lt;br /&gt;&lt;br /&gt;Once you are ready to build the shell extension, simply choose &lt;i&gt;Batch Build...&lt;/i&gt; under the Build menu, check both &lt;i&gt;Release|Win32&lt;/i&gt; and &lt;i&gt;Release|x64&lt;/i&gt; solution config of the PathCopyCopy project, and click &lt;b&gt;Build&lt;/b&gt;. Building should not take long depending on the speed of your computer.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297471" alt="Developer_BuildingShellExt_BatchBuilding.png" title="Developer_BuildingShellExt_BatchBuilding.png" /&gt;
&lt;h6&gt;Using Batch Build to build both versions of PathCopyCopy&lt;/h6&gt;
&lt;br /&gt;The output files, including the final &lt;b&gt;PathCopyCopy.dll&lt;/b&gt;, are written in the &lt;i&gt;bin&lt;/i&gt; directory under the root source directory. Object files will be in the &lt;i&gt;obj&lt;/i&gt; directory, next to bin. Note that the build mechanism will automatically &lt;i&gt;register&lt;/i&gt; the DLL, as the shell extension is a COM object.&lt;br /&gt;
&lt;h2&gt;Building the settings application&lt;/h2&gt;
When the user selects the &lt;i&gt;Settings...&lt;/i&gt; item in the Path Copy Copy submenu, the shell extension launches the &lt;b&gt;Settings application&lt;/b&gt; to let the user modify the options. This application has its own Visual Studio solution named &lt;b&gt;PathCopyCopySettings.sln&lt;/b&gt;. This solution contains a single project that is written in C# and targets .NET Framework 2.0.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297472" alt="Developer_BuildingSettingsApp_PathCopyCopySettingsSln.png" title="Developer_BuildingSettingsApp_PathCopyCopySettingsSln.png" /&gt;
&lt;h6&gt;The PathCopyCopySettings solution&lt;/h6&gt;
&lt;br /&gt;The Settings project is a &lt;b&gt;Windows Forms&lt;/b&gt; project whose central source file is named &lt;b&gt;MainForm&lt;/b&gt;. The other source files contain code to deal with the user settings and plugins. Again, this documentation won&amp;#39;t dig into the code. Feel free to explorer if you want to see how settings are changed.&lt;br /&gt;&lt;br /&gt;The PathCopyCopySettings solution again has two configurations, &lt;b&gt;Debug&lt;/b&gt; and &lt;b&gt;Release&lt;/b&gt;, but a single platform named &lt;b&gt;AnyCPU&lt;/b&gt;. This is because a .NET application is platform-agnostic by default. In our case, it will run as a 32-bit application if the user is on a 32-bit system, and as a 64-bit application if on a 64-bit system. Again, the Debug configuration is only needed to trace in the code, so Release should be used in most circumstances.&lt;br /&gt;&lt;br /&gt;Once you are ready to build the settings application, select &lt;b&gt;Release&lt;/b&gt; from the configuration dropdown and &lt;b&gt;Build Solution&lt;/b&gt; from the &lt;i&gt;Build&lt;/i&gt; menu. The output and object files will be saved in the same place as the shell extension project&amp;#39;s, alongside those files. Please note that although the project is platform-agnostic, it is first built in &lt;b&gt;Win32&lt;/b&gt; and then a post-build step is used to copy it to &lt;b&gt;x64&lt;/b&gt; so that both versions of the shell extension will be successfully able to find the application. The application file is named &lt;b&gt;PathCopyCopySettings.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;After both projects have been built, Path Copy Copy should be ready to use. Since the COM object has been registered after building, simply right-clicking on a file or folder should show up the Path Copy Copy menu items.&lt;br /&gt;
&lt;h2&gt;Building the installer&lt;/h2&gt;
For those who may need to modify Path Copy Copy and redistribute the modified version, building the installer may be needed. Path Copy Copy&amp;#39;s setup has been built using the &lt;b&gt;&lt;a href="http://www.jrsoftware.org/isinfo.php" class="externalLink"&gt;Inno Setup&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; tool. In order to build the installer, make sure you have Inno Setup installed. You also need the Inno Setup Preprocessor, a free add-on. The simplest way to get it all in one package is to use the &lt;b&gt;QuickStart Pack&lt;/b&gt; (see the &lt;a href="http://www.jrsoftware.org/isdl.php" class="externalLink"&gt;Inno Setup download page&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Building the Path Copy Copy setup is easy. Simply open the &lt;b&gt;Setup.iss&lt;/b&gt; file located in the &lt;i&gt;Installer&lt;/i&gt; directory under the root source directory and choose &lt;b&gt;Compile&lt;/b&gt; from the Inno Setup Compiler toolbar. (Note that if you installed InnoIDE using the QuickStart Pack, it will open instead of the Inno Setup Compiler. The same &lt;i&gt;Compile&lt;/i&gt; command exists in its toolbar, however, and works the same way.)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297572" alt="Developer_BuildingInstaller_CompilingIsc.png" title="Developer_BuildingInstaller_CompilingIsc.png" /&gt;
&lt;h6&gt;Compiling the Path Copy Copy setup using Inno Setup Compiler&lt;/h6&gt;
&lt;br /&gt;Once the compilation completes, go back to the &lt;i&gt;Installer&lt;/i&gt; directory and a new directory named &lt;b&gt;Output&lt;/b&gt; will have been created. It will contain the setup application, named &lt;b&gt;PathCopyCopy&lt;i&gt;VersionNumber&lt;/i&gt;.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;This concludes the documentation to build Path Copy Copy from source. Those of you wishing to develop custom plugins can continue to the next section.&lt;br /&gt;
&lt;h2&gt;Plugin development&lt;/h2&gt;
Path Copy Copy has been designed with a modular architecture. Each command seen in the contextual menu is called a &lt;b&gt;plugin&lt;/b&gt; internally. It is possible to create and distribute custom plugins in the form of &lt;b&gt;COM objects&lt;/b&gt; implementing custom Path Copy Copy interfaces. In this chapter, the sample C++ plugin project will be shown, but it should be possible to write custom plugins in any programming language using any environment, as long as it supports COM object development.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note&lt;/b&gt;: it is assumed here that you are familiar with the C++ language and the development of COM objects using the ATL library. Learning to do this is outside the scope of this documentation. Please refer to web tutorials for more information.&lt;br /&gt;&lt;br /&gt;Path Copy Copy ships with a sample Visual C++ project that implements a complete plugin. There are two places where it can be found:
&lt;ul&gt;&lt;li&gt;In Path Copy Copy&amp;#39;s installation directory, under &lt;i&gt;Samples\Plugins\COM\C++&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;In Path Copy Copy&amp;#39;s source tree, under &lt;i&gt;Samples\SampleCOMPluginCpp&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt;
The sample comes with a Visual Studio 2008 solution containing a single project, itself containing only one important class named &lt;b&gt;SamplePathCopyCopyPlugin&lt;/b&gt;. It also uses a file named &lt;b&gt;PathCopyCopy_i.h&lt;/b&gt; that is very important as it contains the definintions of Path Copy Copy&amp;#39;s custom interfaces.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297577" alt="Developer_PluginDevelopment_SampleCOMCppProject.png" title="Developer_PluginDevelopment_SampleCOMCppProject.png" /&gt;
&lt;h6&gt;The sample C++ COM plugin project&lt;/h6&gt;
&lt;br /&gt;Opening &lt;i&gt;SamplePathCopyCopyPlugin.h&lt;/i&gt; will display the declaration of the COM plugin class. In order to showcase them all, the class implements all three Path Copy Copy interfaces.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297726" alt="Developer_PluginDevelopment_SampleClassIntf.png" title="Developer_PluginDevelopment_SampleClassIntf.png" /&gt;
&lt;h6&gt;The sample plugin class&amp;#39; declaration with the Path Copy Copy interfaces&lt;/h6&gt;
&lt;br /&gt;In order to be usable by Path Copy Copy, your plugin COM object needs to implement at least the &lt;b&gt;IPathCopyCopyPlugin&lt;/b&gt; interface. The other interfaces are optional and can be implemented only if needed.
&lt;h4&gt;IPathCopyCopyPlugin interface&lt;/h4&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297727" alt="Developer_PluginDevelopment_IPathCopyCopyPluginIntf.png" title="Developer_PluginDevelopment_IPathCopyCopyPluginIntf.png" /&gt;
&lt;h6&gt;The IPathCopyCopyPlugin methods&lt;/h6&gt;
&lt;br /&gt;Base interface that is required for all Path Copy Copy plugins. In contains three methods:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;get_Description:&lt;/b&gt; Must return the plugin&amp;#39;s description string. Will be displayed in the contextual menu to identify the plugin.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get_HelpText:&lt;/b&gt; Can return a help text that will be shown in the shell&amp;#39;s status bar when the cursor hovers over the plugin&amp;#39;s contextual menu item. It is legal to return &lt;span class="codeInline"&gt;NULL&lt;/span&gt; or an empty string for this.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GetPath:&lt;/b&gt; Main work method invoked by Path Copy Copy when it needs to get the path for a particular file or folder. This method can be called repeatedly if the user selected a group of files. It receives the full path to the file as input and must return a path, modified as needed.&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;IPathCopyCopyPluginGroupInfo interface&lt;/h4&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297729" alt="Developer_PluginDevelopment_IPathCopyCopyGroupInfoIntf.png" title="Developer_PluginDevelopment_IPathCopyCopyGroupInfoIntf.png" /&gt;
&lt;h6&gt;The IPathCopyCopyGroupInfo methods&lt;/h6&gt;
&lt;br /&gt;Optional interface that can be implemented when working on a group of plugins so that they are kept next to each other in the contextual menu. If this interface is not implemented, all custom plugins end up in the same &amp;quot;group&amp;quot; in the menu. This interface allows plugins to group together and determine ordering. It contains two methods:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;get_GroupId:&lt;/b&gt; Must return the &lt;b&gt;group ID&lt;/b&gt; (see below) of the group of plugins to which this plugin belongs to. All plugins with the same group ID will appear in the same block in the contextual menu, surrounded by separators.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get_GroupPosition:&lt;/b&gt; Must return the zero-based position of the plugin within the group. Path Copy Copy will display plugins in ascending order of group position when displaying the group.&lt;/li&gt;&lt;/ul&gt;
Plugin groups are identified by an &lt;b&gt;ID&lt;/b&gt; that is a 32-bit unsigned integer. Since there is no real way to know which IDs are already in use, developers are encouraged to specify their group ID using a four-char code, like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
    STDMETHODIMP MyPlugin::get_GroupId(ULONG *p_pGroupId)
    {
        *p_pGroupId = &amp;#39;MYGP&amp;#39;;
        return S_OK;
    }
&lt;/pre&gt;Furthermore, group IDs composed of all lowercase letters are considered &lt;b&gt;reserved&lt;/b&gt; for internal use.&lt;br /&gt;
&lt;h4&gt;IPathCopyCopyStateInfo interface&lt;/h4&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297837" alt="Developer_PluginDevelopment_IPathCopyCopyStateInfoIntf.png" title="Developer_PluginDevelopment_IPathCopyCopyStateInfoIntf.png" /&gt;
&lt;h6&gt;The IPathCopyCopyStateInfo method&lt;/h6&gt;
&lt;br /&gt;Optional interface that allows a plugin to specify its state in the contextual menu. It contains a single method:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Enabled:&lt;/b&gt; Called when the contextual menu is built to know if the plugin&amp;#39;s entry should be enabled or not. The method receives two information to decide: the &lt;b&gt;path of a file&lt;/b&gt; that was selected by the user, and the &lt;b&gt;path of its parent directory&lt;/b&gt;. In order to be disabled, the method must return &lt;span class="codeInline"&gt;S_OK&lt;/span&gt; and set the &lt;span class="codeInline"&gt;VARIANT_BOOL&lt;/span&gt; parameter to &lt;span class="codeInline"&gt;VARIANT_FALSE&lt;/span&gt;; any other combination of results will leave the plugin enabled.&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;Plugin registration&lt;/h4&gt;
Once your plugin has been developed, it needs to be registered as a COM object as well as with Path Copy Copy. In order to do this, the Path Copy Copy contextual menu extension COM object includes two methods to &lt;b&gt;register&lt;/b&gt; and &lt;b&gt;unregister&lt;/b&gt; a plugin. One place to do this is in the &lt;i&gt;DllRegisterServer&lt;/i&gt; override of your ATL module.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
    // In dllmain.h
    class CMyModule : public CAtlDllModuleT&amp;lt; CMyModule &amp;gt;
    {
    public :
        DECLARE_LIBID(...)
        DECLARE_REGISTRY_APPID_RESOURCEID(...)

        HRESULT DllRegisterServer(BOOL bRegTypeLib = TRUE) throw();
        HRESULT DllUnregisterServer(BOOL bUnRegTypeLib = TRUE) throw();
    };
&lt;/pre&gt;&lt;pre&gt;
    // In dllmain.cpp
    HRESULT CMyModule::DllRegisterServer( BOOL bRegTypeLib /*= TRUE*/ ) throw()
    {
        HRESULT hRes = CAtlDllModuleT&amp;lt; CMyModule &amp;gt;::DllRegisterServer(bRegTypeLib);
        if (SUCCEEDED(hRes)) {
            CComPtr&amp;lt;IPathCopyCopyContextMenuExt&amp;gt; cpPccExt;
            hRes = cpPccExt.CoCreateInstance(__uuidof(PathCopyCopyContextMenuExt));
            if (SUCCEEDED(hRes)) {
                cpPccExt-&amp;gt;RegisterPlugin(__uuidof(MyPlugin));
            }
        }
        return hRes;
    }

    HRESULT CMyModule::DllUnregisterServer( BOOL bUnRegTypeLib /*= TRUE*/ ) throw()
    {
        HRESULT hRes = CAtlDllModuleT&amp;lt; CMyModule &amp;gt;::DllUnregisterServer(bUnRegTypeLib);
        if (SUCCEEDED(hRes)) {
            CComPtr&amp;lt;IPathCopyCopyContextMenuExt&amp;gt; cpPccExt;
            hRes = cpPccExt.CoCreateInstance(__uuidof(PathCopyCopyContextMenuExt));
            if (SUCCEEDED(hRes)) {
                cpPccExt-&amp;gt;UnregisterPlugin(__uuidof(MyPlugin));
            }
        }
        return hRes;
    }
&lt;/pre&gt;&lt;b&gt;IMPORTANT NOTE:&lt;/b&gt; Please do &lt;b&gt;NOT&lt;/b&gt; try to reverse-engineer Path Copy Copy&amp;#39;s plugin registration internals and how plugins are saved. This is not guaranteed to be stable from version to version. The registration interface, however, is guaranteed to always exist.&lt;br /&gt;
&lt;h2&gt;Questions?&lt;/h2&gt;
This concludes the developer documentation for Path Copy Copy. If you have further questions regarding any aspect of development (the source, the build system, plugin development, etc.) please don&amp;#39;t hesitate to post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions" class="externalLink"&gt;Discussions&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; section.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Mon, 06 Feb 2012 13:30:24 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Developer 20120206013024P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://pathcopycopy.codeplex.com/documentation?version=13</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;End-User  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Documentation"&gt;Network Administrator&lt;/a&gt;  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Documentation"&gt;Developer&lt;/a&gt;&lt;/h5&gt;&lt;hr /&gt;
Welcome to the Path Copy Copy documentation. It has been divided into three subsections that you can access via the links at the top of the page.&lt;br /&gt;This subsection contains information for end-users looking to install and use Path Copy Copy.&lt;br /&gt;
&lt;h2&gt;Purpose&lt;/h2&gt;
Path Copy Copy is an extension for &lt;b&gt;Windows Explorer&lt;/b&gt; (and alternative shell programs) that allows you to quickly copy to the clipboard the &lt;b&gt;path&lt;/b&gt; of a file, folder or group of files. A file&amp;#39;s path represents the location of the file in the filesystem. It usually begins with a drive letter (except for network paths) and is composed of zero or more directories, ending with the file&amp;#39;s name.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297062" alt="EndUser_Purpose_Path.png" title="EndUser_Purpose_Path.png" /&gt;
&lt;h6&gt;Path of this file: C:\Example\Sample File.txt&lt;/h6&gt;
&lt;br /&gt;Having a file&amp;#39;s path can be useful to paste it in another program asking for a file. For example, you can paste the full path of a file in an Open dialog box to quickly open a file without having to navigate to it by hand. If you had an Explorer window already open at the file&amp;#39;s location, you can save time. It can also be useful when launching a program from the command-line. There are other uses too; it depends on your workflow. (Note that if you are unsure if Path Copy Copy is useful for you, you can try it for a while and simply uninstall it if you don&amp;#39;t find yourself using it enough.)&lt;br /&gt;
&lt;h2&gt;Requirements&lt;/h2&gt;
In order to install and use Path Copy Copy, your computer needs to meet these minimum requirements.
&lt;ul&gt;&lt;li&gt;Windows XP with Service Pack 2, Windows Vista, Windows 7, Windows Server 2003, Windows Server 2008 or Windows Server 2008 R2&lt;/li&gt;
&lt;li&gt;.NET Framework 2.0 (will most likely be already installed on all these OSes - otherwise, install via Windows Update)&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Installing&lt;/h2&gt;
Installing Path Copy Copy is easy. Simply download the latest release by selecting &lt;b&gt;Downloads&lt;/b&gt; from the list of project pages above, download the setup exe and execute it. An installation wizard will show up to help you with the installation.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338342" alt="EndUser_Installing_WizardWelcome.png" title="EndUser_Installing_WizardWelcome.png" /&gt;
&lt;h6&gt;The Welcome page of the Path Copy Copy&amp;#39;s installation wizard&lt;/h6&gt;
&lt;br /&gt;Click Next to navigate the wizard pages. After agreeing to the Path Copy Copy &lt;a href="http://pathcopycopy.codeplex.com/license" class="externalLink"&gt;license&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and choosing an installation directory (the default is usually fine), you will be asked to pre-configure available commands.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338343" alt="EndUser_Installing_PreConfigureCommands.png" title="EndUser_Installing_PreConfigureCommands.png" /&gt;
&lt;h6&gt;Choosing which commands are available during installation&lt;/h6&gt;
&lt;br /&gt;The choice you make on this page will determine the &amp;quot;commands&amp;quot; that will be visible in the Path Copy Copy contextual submenu. The default choice, &amp;quot;commonly-used commands only&amp;quot;, will probably be sufficient for most users. Please note that whatever choice you pick, you can always go back later and change the commands in the settings application. &lt;b&gt;Note:&lt;/b&gt; this page will not appear if you are upgrading from a previous version.&lt;br /&gt;&lt;br /&gt;After the wizard finishes, setup simply disappears and Path Copy Copy is ready for use.&lt;br /&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
Using Path Copy Copy is also simple. Simply right-click on a file, folder or group of files in the Windows Explorer&amp;#39;s window and the contextual menu that shows up will now include two things: a Path Copy Copy &lt;b&gt;default command&lt;/b&gt; as well as a submenu containing &lt;b&gt;all commands available&lt;/b&gt;. The submenu will also include an item to open the &lt;b&gt;settings&lt;/b&gt;. (Note that the commands found in the submenu depend on the choice made during installation.)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297071" alt="EndUser_Usage_MenuItems.png" title="EndUser_Usage_MenuItems.png" /&gt;
&lt;h6&gt;The various parts of Path Copy Copy&lt;/h6&gt;
&lt;br /&gt;Selecting the default command will copy the selected file&amp;#39;s full path to the clipboard. Other path formats are available by selecting them from the submenu:
&lt;ul&gt;&lt;li&gt;Just the file&amp;#39;s &lt;b&gt;name&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Short&lt;/b&gt; path format, which corresponds to the old MS-DOS 8.3 format. Note that this format guarantees that the path contains no spaces.&lt;/li&gt;
&lt;li&gt;The file&amp;#39;s &lt;b&gt;parent folder&lt;/b&gt; path (useful to quickly navigate to that folder).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;UNC&lt;/b&gt; paths, also known as network paths - useful if you have mapped network drives or files to share with others over a corporate network.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Internet&lt;/b&gt; path, using the file:// protocol and with escaped whitespaces - useful to open the file in a Web Browser.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Unix&lt;/b&gt; and &lt;b&gt;Cygwin&lt;/b&gt; paths, using forward slashes (/) instead of backslashes (\) to separate directories - useful if you&amp;#39;re using Unix utilities.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Options&lt;/h2&gt;
Choosing the &lt;i&gt;Settings&lt;/i&gt; item in Path Copy Copy&amp;#39;s submenu will launch an application allowing you to customize some of Path Copy Copy&amp;#39;s behavior. This application has a tabbed interface and three buttons at the bottom. To edit the settings and save, press either the &lt;b&gt;Apply&lt;/b&gt; or &lt;b&gt;OK&lt;/b&gt; button. To close without saving changes to the settings, press the &lt;b&gt;Cancel&lt;/b&gt; button.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; it&amp;#39;s possible that the Settings item is not present if Path Copy Copy has been installed by your network administrator and its settings have been locked.
&lt;h4&gt;Commands tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338884" alt="EndUser_Options_CommandsTab.png" title="EndUser_Options_CommandsTab.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab allows you to choose which commands will be shown in Explorer&amp;#39;s &lt;b&gt;main contextual menu&lt;/b&gt; and the Path Copy Copy &lt;b&gt;submenu&lt;/b&gt;. By default, the &lt;b&gt;Copy Long Path&lt;/b&gt; command is shown in the main menu and other commands are shown in the submenu (depending on the choice made during installation). The checkboxes next to each command in the list allows you to change the default layout.&lt;br /&gt;&lt;br /&gt;A command can show up both in the main menu and the submenu. Unchecking both checkboxes will cause the command to not show up at all; useful for commands that are not useful to a specific user.&lt;br /&gt;
&lt;h4&gt;Custom Commands tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338885" alt="EndUser_Options_CustomCommandsTab.png" title="EndUser_Options_CustomCommandsTab.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab allows you to configure &lt;b&gt;custom commands&lt;/b&gt; that can decide how the path will be copied to the clipboard. This tab contains a list of all existing custom commands as well as several buttons to manipulate them. The &lt;i&gt;Move Up&lt;/i&gt; and &lt;i&gt;Move Down&lt;/i&gt; buttons allow you to organize the custom commands in the order you see fit. The &lt;i&gt;New&lt;/i&gt; button will open another dialog to create a custom command (see below). The &lt;i&gt;Edit&lt;/i&gt; button allows you to modify the behavior of an existing custom command. Finally, the &lt;i&gt;Remove&lt;/i&gt; button allows you to remove custom commands from the available commands.&lt;br /&gt;&lt;br /&gt;Once defined, custom commands can be configured to appear in the main menu or submenu, from the &lt;i&gt;Commands&lt;/i&gt; tab. Also note that custom commands are &lt;i&gt;user-specific&lt;/i&gt; - each user account has its own custom commands (except if some are pre-installed by your network administrator).&lt;br /&gt;
&lt;h4&gt;Advanced tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338883" alt="EndUser_Options_AdvancedTab.png" title="EndUser_Options_AdvancedTab.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab contains checkboxes for the following options:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Add quotes around copied paths:&lt;/b&gt; Paths copied will be surrounded by quotes (&amp;quot;).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use hidden shares when copying UNC paths:&lt;/b&gt; Hidden shares are those ending with a dollar sign ($). Creating such a share means it won&amp;#39;t show up when other network users look for shares on your machine, but if someone knows the share name, it can be used to access the share. By default, Path Copy Copy does not consider such shares when looking for a share path for a file. If this is selected, hidden shares will be considered. Please note that this also includes administrative shares (\\computername\C$, for example).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Always show submenu:&lt;/b&gt; Selected by default, this option makes it so that Path Copy Copy&amp;#39;s submenu is always shown in the shell&amp;#39;s contextual menu. If this is deselected, you will need to hold down the Shift key while right-clicking on a file to see the submenu.&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;Custom Command dialog box&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313335" alt="EndUser_CustomCommand_Tab1.png" title="EndUser_CustomCommand_Tab1.png" /&gt;&lt;br /&gt;&lt;br /&gt;This dialog, spawned by either the &lt;i&gt;New&lt;/i&gt; or &lt;i&gt;Edit&lt;/i&gt; buttons of the &lt;i&gt;Custom Commands&lt;/i&gt; tab of the settings application, allows you to configure the behavior of a custom command. Each custom command can be given a &lt;b&gt;name&lt;/b&gt; that will be used to display the command in the Path Copy Copy menus. Next, there are two steps to configuring the custom command.&lt;br /&gt;
&lt;h5&gt;Choosing a base command&lt;/h5&gt;
The first step that a custom command will perform when computing the path is call an existing &lt;b&gt;base command&lt;/b&gt;. For example, you may want your custom command to modify the normal output of the &lt;i&gt;UNC Path&lt;/i&gt; command. To choose the base command, simply select it in the listbox that is located in the &lt;i&gt;Base Command&lt;/i&gt; tab of the dialog box.&lt;br /&gt;
&lt;h5&gt;Configuring options&lt;/h5&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313336" alt="EndUser_CustomCommand_Tab2.png" title="EndUser_CustomCommand_Tab2.png" /&gt;&lt;br /&gt;&lt;br /&gt;The second tab of the dialog box, named &lt;i&gt;Options&lt;/i&gt;, can be used to alter the path that will be copied to the clipboard when the custom command is invoked. There are several options to choose from.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Enclose path in quotation marks:&lt;/b&gt; As the checkbox says, this will cause the path to be surrounded by quotes. Note: if you also choose this option globally, there will be two pair of quotes around the path!&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Change slashes:&lt;/b&gt; Causes all forward slashes ( / ) in the path to be converted to backslashes ( \ ), or vice-versa.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Find / Replace:&lt;/b&gt; Will perform a find/replace operation in the path, replacing all instances of the text entered in the &lt;i&gt;Find what&lt;/i&gt; edit box with the text in the &lt;i&gt;Replace with&lt;/i&gt; edit box.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Once you are satisfied with your configuration, press the &lt;i&gt;OK&lt;/i&gt; button at the bottom of the dialog box to save the custom command. You can cancel the creation/editing by pressing the &lt;i&gt;Cancel&lt;/i&gt; button.&lt;br /&gt;
&lt;h2&gt;Questions? Issues?&lt;/h2&gt;
This concludes the little End-User documentation for Path Copy Copy. If you have a question regarding any aspect of the software, you can post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions" class="externalLink"&gt;Discussions&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; section. If you have an issue (either because of a bug, a feature not working as it should or even a feature you would like to see implemented), do not hesitate to enter a work item in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/workitem/list/basic" class="externalLink"&gt;Issue Tracker&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. If the information you were looking for is not here, you can try to look in the two other subsections, &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Documentation"&gt;Network Administrator&lt;/a&gt; and &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Documentation"&gt;Developer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;sub&gt;Last updated for version 9.2&lt;/sub&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Mon, 06 Feb 2012 05:26:20 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20120206052620A</guid></item><item><title>Updated Wiki: Documentation</title><link>http://pathcopycopy.codeplex.com/documentation?version=12</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;End-User  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Documentation"&gt;Network Administrator&lt;/a&gt;  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Documentation"&gt;Developer&lt;/a&gt;&lt;/h5&gt;&lt;hr /&gt;
Welcome to the Path Copy Copy documentation. It has been divided into three subsections that you can access via the links at the top of the page.&lt;br /&gt;This subsection contains information for end-users looking to install and use Path Copy Copy.&lt;br /&gt;
&lt;h2&gt;Purpose&lt;/h2&gt;
Path Copy Copy is an extension for &lt;b&gt;Windows Explorer&lt;/b&gt; (and alternative shell programs) that allows you to quickly copy to the clipboard the &lt;b&gt;path&lt;/b&gt; of a file, folder or group of files. A file&amp;#39;s path represents the location of the file in the filesystem. It usually begins with a drive letter (except for network paths) and is composed of zero or more directories, ending with the file&amp;#39;s name.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297062" alt="EndUser_Purpose_Path.png" title="EndUser_Purpose_Path.png" /&gt;
&lt;h6&gt;Path of this file: C:\Example\Sample File.txt&lt;/h6&gt;
&lt;br /&gt;Having a file&amp;#39;s path can be useful to paste it in another program asking for a file. For example, you can paste the full path of a file in an Open dialog box to quickly open a file without having to navigate to it by hand. If you had an Explorer window already open at the file&amp;#39;s location, you can save time. It can also be useful when launching a program from the command-line. There are other uses too; it depends on your workflow. (Note that if you are unsure if Path Copy Copy is useful for you, you can try it for a while and simply uninstall it if you don&amp;#39;t find yourself using it enough.)&lt;br /&gt;
&lt;h2&gt;Requirements&lt;/h2&gt;
In order to install and use Path Copy Copy, your computer needs to meet these minimum requirements.
&lt;ul&gt;&lt;li&gt;Windows XP with Service Pack 2, Windows Vista, Windows 7, Windows Server 2003, Windows Server 2008 or Windows Server 2008 R2&lt;/li&gt;
&lt;li&gt;.NET Framework 2.0 (will most likely be already installed on all these OSes - otherwise, install via Windows Update)&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Installing&lt;/h2&gt;
Installing Path Copy Copy is easy. Simply download the latest release by selecting &lt;b&gt;Downloads&lt;/b&gt; from the list of project pages above, download the setup exe and execute it. An installation wizard will show up to help you with the installation.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338342" alt="EndUser_Installing_WizardWelcome.png" title="EndUser_Installing_WizardWelcome.png" /&gt;
&lt;h6&gt;The Welcome page of the Path Copy Copy&amp;#39;s installation wizard&lt;/h6&gt;
&lt;br /&gt;Click Next to navigate the wizard pages. After agreeing to the Path Copy Copy &lt;a href="http://pathcopycopy.codeplex.com/license" class="externalLink"&gt;license&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and choosing an installation directory (the default is usually fine), you will be asked to pre-configure available commands.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338343" alt="EndUser_Installing_PreConfigureCommands.png" title="EndUser_Installing_PreConfigureCommands.png" /&gt;
&lt;h6&gt;Choosing which commands are available during installation&lt;/h6&gt;
&lt;br /&gt;The choice you make on this page will determine the &amp;quot;commands&amp;quot; that will be visible in the Path Copy Copy contextual submenu. The default choice, &amp;quot;commonly-used commands only&amp;quot;, will probably be sufficient for most users. Please note that whatever choice you pick, you can always go back later and change the commands in the settings application. &lt;b&gt;Note:&lt;/b&gt; this page will not appear if you are upgrading from a previous version.&lt;br /&gt;&lt;br /&gt;After the wizard finishes, setup simply disappears and Path Copy Copy is ready for use.&lt;br /&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
Using Path Copy Copy is also simple. Simply right-click on a file, folder or group of files in the Windows Explorer&amp;#39;s window and the contextual menu that shows up will now include two things: a Path Copy Copy &lt;b&gt;default command&lt;/b&gt; as well as a submenu containing &lt;b&gt;all commands available&lt;/b&gt;. The submenu will also include an item to open the &lt;b&gt;settings&lt;/b&gt;. (Note that the commands found in the submenu depend on the choice made during installation.)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297071" alt="EndUser_Usage_MenuItems.png" title="EndUser_Usage_MenuItems.png" /&gt;
&lt;h6&gt;The various parts of Path Copy Copy&lt;/h6&gt;
&lt;br /&gt;Selecting the default command will copy the selected file&amp;#39;s full path to the clipboard. Other path formats are available by selecting them from the submenu:
&lt;ul&gt;&lt;li&gt;Just the file&amp;#39;s &lt;b&gt;name&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Short&lt;/b&gt; path format, which corresponds to the old MS-DOS 8.3 format. Note that this format guarantees that the path contains no spaces.&lt;/li&gt;
&lt;li&gt;The file&amp;#39;s &lt;b&gt;parent folder&lt;/b&gt; path (useful to quickly navigate to that folder).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;UNC&lt;/b&gt; paths, also known as network paths - useful if you have mapped network drives or files to share with others over a corporate network.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Internet&lt;/b&gt; path, using the file:// protocol and with escaped whitespaces - useful to open the file in a Web Browser.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Unix&lt;/b&gt; and &lt;b&gt;Cygwin&lt;/b&gt; paths, using forward slashes (/) instead of backslashes (\) to separate directories - useful if you&amp;#39;re using Unix utilities.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Options&lt;/h2&gt;
Choosing the &lt;i&gt;Settings&lt;/i&gt; item in Path Copy Copy&amp;#39;s submenu will launch an application allowing you to customize some of Path Copy Copy&amp;#39;s behavior. This application has a tabbed interface and three buttons at the bottom. To edit the settings and save, press either the &lt;b&gt;Apply&lt;/b&gt; or &lt;b&gt;OK&lt;/b&gt; button. To close without saving changes to the settings, press the &lt;b&gt;Cancel&lt;/b&gt; button.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; it&amp;#39;s possible that the Settings item is not present if Path Copy Copy has been installed by your network administrator and its settings have been locked.
&lt;h4&gt;Commands tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338884" alt="EndUser_Options_CommandsTab.png" title="EndUser_Options_CommandsTab.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab allows you to choose which commands will be shown in Explorer&amp;#39;s &lt;b&gt;main contextual menu&lt;/b&gt; and the Path Copy Copy &lt;b&gt;submenu&lt;/b&gt;. By default, the &lt;b&gt;Copy Long Path&lt;/b&gt; command is shown in the main menu and other commands are shown in the submenu (depending on the choice made during installation). The checkboxes next to each command in the list allows you to change the default layout.&lt;br /&gt;&lt;br /&gt;A command can show up both in the main menu and the submenu. Unchecking both checkboxes will cause the command to not show up at all; useful for commands that are not useful to a specific user.&lt;br /&gt;
&lt;h4&gt;Custom Commands tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338885" alt="EndUser_Options_CustomCommandsTab.png" title="EndUser_Options_CustomCommandsTab.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab allows you to configure &lt;b&gt;custom commands&lt;/b&gt; that can decide how the path will be copied to the clipboard. This tab contains a list of all existing custom commands as well as several buttons to manipulate them. The &lt;i&gt;Move Up&lt;/i&gt; and &lt;i&gt;Move Down&lt;/i&gt; buttons allow you to organize the custom commands in the order you see fit. The &lt;i&gt;New&lt;/i&gt; button will open another dialog to create a custom command (see below). The &lt;i&gt;Edit&lt;/i&gt; button allows you to modify the behavior of an existing custom command. Finally, the &lt;i&gt;Remove&lt;/i&gt; button allows you to remove custom commands from the available commands.&lt;br /&gt;&lt;br /&gt;Once defined, custom commands can be configured to appear in the main menu or submenu, from the &lt;i&gt;Commands&lt;/i&gt; tab. Also note that custom commands are &lt;i&gt;user-specific&lt;/i&gt; - each user account has its own custom commands (except if some are pre-installed by your network administrator).&lt;br /&gt;
&lt;h4&gt;Advanced tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338883" alt="EndUser_Options_AdvancedTab.png" title="EndUser_Options_AdvancedTab.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab contains checkboxes for the following options:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Add quotes around copied paths:&lt;/b&gt; Paths copied will be surrounded by quotes (&amp;quot;).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use hidden shares when copying UNC paths:&lt;/b&gt; Hidden shares are those ending with a dollar sign ($). Creating such a share means it won&amp;#39;t show up when other network users look for shares on your machine, but if someone knows the share name, it can be used to access the share. By default, Path Copy Copy does not consider such shares when looking for a share path for a file. If this is selected, hidden shares will be considered. Please note that this also includes administrative shares (\\computername\C$, for example).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Always show submenu:&lt;/b&gt; Selected by default, this option makes it so that Path Copy Copy&amp;#39;s submenu is always shown in the shell&amp;#39;s contextual menu. If this is deselected, you will need to hold down the Shift key while right-clicking on a file to see the submenu.&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;Custom Command dialog box&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313335" alt="EndUser_CustomCommand_Tab1.png" title="EndUser_CustomCommand_Tab1.png" /&gt;&lt;br /&gt;&lt;br /&gt;This dialog, spawned by either the &lt;i&gt;New&lt;/i&gt; or &lt;i&gt;Edit&lt;/i&gt; buttons of the &lt;i&gt;Custom Commands&lt;/i&gt; tab of the settings application, allows you to configure the behavior of a custom command. Each custom command can be given a &lt;b&gt;name&lt;/b&gt; that will be used to display the command in the Path Copy Copy menus. Next, there are two steps to configuring the custom command.&lt;br /&gt;
&lt;h5&gt;Choosing a base command&lt;/h5&gt;
The first step that a custom command will perform when computing the path is call an existing &lt;b&gt;base command&lt;/b&gt;. For example, you may want your custom command to modify the normal output of the &lt;i&gt;UNC Path&lt;/i&gt; command. To choose the base command, simply select it in the listbox that is located in the &lt;i&gt;Base Command&lt;/i&gt; tab of the dialog box.&lt;br /&gt;
&lt;h5&gt;Configuring options&lt;/h5&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313336" alt="EndUser_CustomCommand_Tab2.png" title="EndUser_CustomCommand_Tab2.png" /&gt;&lt;br /&gt;&lt;br /&gt;The second tab of the dialog box, named &lt;i&gt;Options&lt;/i&gt;, can be used to alter the path that will be copied to the clipboard when the custom command is invoked. There are several options to choose from.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Enclose path in quotation marks:&lt;/b&gt; As the checkbox says, this will cause the path to be surrounded by quotes. Note: if you also choose this option globally, there will be two pair of quotes around the path!&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Change slashes:&lt;/b&gt; Causes all forward slashes ( / ) in the path to be converted to backslashes ( \ ), or vice-versa.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Find / Replace:&lt;/b&gt; Will perform a find/replace operation in the path, replacing all instances of the text entered in the &lt;i&gt;Find what&lt;/i&gt; edit box with the text in the &lt;i&gt;Replace with&lt;/i&gt; edit box.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Once you are satisfied with your configuration, press the &lt;i&gt;OK&lt;/i&gt; button at the bottom of the dialog box to save the custom command. You can cancel the creation/editing by pressing the &lt;i&gt;Cancel&lt;/i&gt; button.&lt;br /&gt;
&lt;h2&gt;Questions? Issues?&lt;/h2&gt;
This concludes the little End-User documentation for Path Copy Copy. If you have a question regarding any aspect of the software, you can post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions" class="externalLink"&gt;Discussions&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; section. If you have an issue (either because of a bug, a feature not working as it should or even a feature you would like to see implemented), do not hesitate to enter a work item in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/workitem/list/basic" class="externalLink"&gt;Issue Tracker&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. If the information you were looking for is not here, you can try to look in the two other subsections, &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Documentation"&gt;Network Administrator&lt;/a&gt; and &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Documentation"&gt;Developer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;sub&gt;Last updated 2012/02/06 for version 9.2&lt;/sub&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Mon, 06 Feb 2012 05:25:06 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20120206052506A</guid></item><item><title>Updated Wiki: Documentation</title><link>http://pathcopycopy.codeplex.com/documentation?version=11</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;End-User  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Documentation"&gt;Network Administrator&lt;/a&gt;  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Documentation"&gt;Developer&lt;/a&gt;&lt;/h5&gt;&lt;hr /&gt;
Welcome to the Path Copy Copy documentation. It has been divided into three subsections that you can access via the links at the top of the page.&lt;br /&gt;This subsection contains information for end-users looking to install and use Path Copy Copy.&lt;br /&gt;
&lt;h2&gt;Purpose&lt;/h2&gt;
Path Copy Copy is an extension for &lt;b&gt;Windows Explorer&lt;/b&gt; (and alternative shell programs) that allows you to quickly copy to the clipboard the &lt;b&gt;path&lt;/b&gt; of a file, folder or group of files. A file&amp;#39;s path represents the location of the file in the filesystem. It usually begins with a drive letter (except for network paths) and is composed of zero or more directories, ending with the file&amp;#39;s name.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297062" alt="EndUser_Purpose_Path.png" title="EndUser_Purpose_Path.png" /&gt;
&lt;h6&gt;Path of this file: C:\Example\Sample File.txt&lt;/h6&gt;
&lt;br /&gt;Having a file&amp;#39;s path can be useful to paste it in another program asking for a file. For example, you can paste the full path of a file in an Open dialog box to quickly open a file without having to navigate to it by hand. If you had an Explorer window already open at the file&amp;#39;s location, you can save time. It can also be useful when launching a program from the command-line. There are other uses too; it depends on your workflow. (Note that if you are unsure if Path Copy Copy is useful for you, you can try it for a while and simply uninstall it if you don&amp;#39;t find yourself using it enough.)&lt;br /&gt;
&lt;h2&gt;Requirements&lt;/h2&gt;
In order to install and use Path Copy Copy, your computer needs to meet these minimum requirements.
&lt;ul&gt;&lt;li&gt;Windows XP with Service Pack 2, Windows Vista, Windows 7, Windows Server 2003, Windows Server 2008 or Windows Server 2008 R2&lt;/li&gt;
&lt;li&gt;.NET Framework 2.0 (will most likely be already installed on all these OSes - otherwise, install via Windows Update)&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Installing&lt;/h2&gt;
Installing Path Copy Copy is easy. Simply download the latest release by selecting &lt;b&gt;Downloads&lt;/b&gt; from the list of project pages above, download the setup exe and execute it. An installation wizard will show up to help you with the installation.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338342" alt="EndUser_Installing_WizardWelcome.png" title="EndUser_Installing_WizardWelcome.png" /&gt;
&lt;h6&gt;The Welcome page of the Path Copy Copy&amp;#39;s installation wizard&lt;/h6&gt;
&lt;br /&gt;Click Next to navigate the wizard pages. After agreeing to the Path Copy Copy &lt;a href="http://pathcopycopy.codeplex.com/license" class="externalLink"&gt;license&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and choosing an installation directory (the default is usually fine), you will be asked to pre-configure available commands.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=338343" alt="EndUser_Installing_PreConfigureCommands.png" title="EndUser_Installing_PreConfigureCommands.png" /&gt;
&lt;h6&gt;Choosing which commands are available during installation&lt;/h6&gt;
&lt;br /&gt;The choice you make on this page will determine the &amp;quot;commands&amp;quot; that will be visible in the Path Copy Copy contextual submenu. The default choice, &amp;quot;commonly-used commands only&amp;quot;, will probably be sufficient for most users. Please note that whatever choice you pick, you can always go back later and change the commands in the settings application. &lt;b&gt;Note:&lt;/b&gt; this page will not appear if you are upgrading from a previous version.&lt;br /&gt;&lt;br /&gt;After the wizard finishes, setup simply disappears and Path Copy Copy is ready for use.&lt;br /&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
Using Path Copy Copy is also simple. Simply right-click on a file, folder or group of files in the Windows Explorer&amp;#39;s window and the contextual menu that shows up will now include two things: a Path Copy Copy &lt;b&gt;default command&lt;/b&gt; as well as a submenu containing &lt;b&gt;all commands available&lt;/b&gt;. The submenu will also include an item to open the &lt;b&gt;settings&lt;/b&gt;. (Note that the commands found in the submenu depend on the choice made during installation.)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297071" alt="EndUser_Usage_MenuItems.png" title="EndUser_Usage_MenuItems.png" /&gt;
&lt;h6&gt;The various parts of Path Copy Copy&lt;/h6&gt;
&lt;br /&gt;Selecting the default command will copy the selected file&amp;#39;s full path to the clipboard. Other path formats are available by selecting them from the submenu:
&lt;ul&gt;&lt;li&gt;Just the file&amp;#39;s &lt;b&gt;name&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Short&lt;/b&gt; path format, which corresponds to the old MS-DOS 8.3 format. Note that this format guarantees that the path contains no spaces.&lt;/li&gt;
&lt;li&gt;The file&amp;#39;s &lt;b&gt;parent folder&lt;/b&gt; path (useful to quickly navigate to that folder).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;UNC&lt;/b&gt; paths, also known as network paths - useful if you have mapped network drives or files to share with others over a corporate network.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Internet&lt;/b&gt; path, using the file:// protocol and with escaped whitespaces - useful to open the file in a Web Browser.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Unix&lt;/b&gt; and &lt;b&gt;Cygwin&lt;/b&gt; paths, using forward slashes (/) instead of backslashes (\) to separate directories - useful if you&amp;#39;re using Unix utilities.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Options&lt;/h2&gt;
Choosing the &lt;i&gt;Settings&lt;/i&gt; item in Path Copy Copy&amp;#39;s submenu will launch an application allowing you to customize some of Path Copy Copy&amp;#39;s behavior. This application has a tabbed interface and three buttons at the bottom. To edit the settings and save, press either the &lt;b&gt;Apply&lt;/b&gt; or &lt;b&gt;OK&lt;/b&gt; button. To close without saving changes to the settings, press the &lt;b&gt;Cancel&lt;/b&gt; button.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; it&amp;#39;s possible that the Settings item is not present if Path Copy Copy has been installed by your network administrator and its settings have been locked.
&lt;h4&gt;Options tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313330" alt="EndUser_Options_Tab1.png" title="EndUser_Options_Tab1.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab contains checkboxes for the following options:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Add quotes around copied paths:&lt;/b&gt; Paths copied will be surrounded by quotes (&amp;quot;).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use hidden shares when copying UNC paths:&lt;/b&gt; Hidden shares are those ending with a dollar sign ($). Creating such a share means it won&amp;#39;t show up when other network users look for shares on your machine, but if someone knows the share name, it can be used to access the share. By default, Path Copy Copy does not consider such shares when looking for a share path for a file. If this is selected, hidden shares will be considered. Please note that this also includes administrative shares (\\computername\C$, for example).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Always show submenu:&lt;/b&gt; Selected by default, this option makes it so that Path Copy Copy&amp;#39;s submenu is always shown in the shell&amp;#39;s contextual menu. If this is deselected, you will need to hold down the Shift key while right-clicking on a file to see the submenu.&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;Default Command tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313331" alt="EndUser_Options_Tab2.png" title="EndUser_Options_Tab2.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab allows you to change what the &lt;b&gt;default command&lt;/b&gt; will be (the command that shows up directly in the shell&amp;#39;s contextual menu). By default, this is set to &lt;b&gt;Copy Long Path&lt;/b&gt;, but it can be changed to anything else. Please note that other commands will still be available in the submenu.&lt;br /&gt;
&lt;h4&gt;Disabled Commands tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313332" alt="EndUser_Options_Tab3.png" title="EndUser_Options_Tab3.png" /&gt;&lt;br /&gt;&lt;br /&gt;In this tab, you can uncheck individual commands so that they no longer show up in the contextual menu. This can be useful if you never use some of the commands and find they take up a lot of space in the menu. For example, some users could choose to disable the UNC commands if their computer is not on a corporate network.&lt;br /&gt;
&lt;h4&gt;Custom Commands tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313333" alt="EndUser_Options_Tab4.png" title="EndUser_Options_Tab4.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab allows you to configure &lt;b&gt;custom commands&lt;/b&gt; that can decide how the path will be copied to the clipboard. This tab contains a list of all existing custom commands as well as several buttons to manipulate them. The &lt;i&gt;Move Up&lt;/i&gt; and &lt;i&gt;Move Down&lt;/i&gt; buttons allow you to organize the custom commands in the order you see fit. The &lt;i&gt;New&lt;/i&gt; button will open another dialog to create a custom command (see below). The &lt;i&gt;Edit&lt;/i&gt; button allows you to modify the behavior of an existing custom command. Finally, the &lt;i&gt;Remove&lt;/i&gt; button allows you to remove custom commands from the submenu.&lt;br /&gt;&lt;br /&gt;Once defined, custom commands can be chosed as the default command, or can be enabled/disabled as normal. Also note that custom commands are &lt;i&gt;user-specific&lt;/i&gt; - each user account has its own custom commands (except if some are pre-installed by your network administrator).&lt;br /&gt;
&lt;h4&gt;Custom Command dialog box&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313335" alt="EndUser_CustomCommand_Tab1.png" title="EndUser_CustomCommand_Tab1.png" /&gt;&lt;br /&gt;&lt;br /&gt;This dialog, spawned by either the &lt;i&gt;New&lt;/i&gt; or &lt;i&gt;Edit&lt;/i&gt; buttons of the &lt;i&gt;Custom Commands&lt;/i&gt; tab of the settings application, allows you to configure the behavior of a custom command. Each custom command can be given a &lt;b&gt;name&lt;/b&gt; that will be used to display the command in the Path Copy Copy submenu. Next, there are two steps to configuring the custom command.&lt;br /&gt;
&lt;h5&gt;Choosing a base command&lt;/h5&gt;
The first step that a custom command will perform when computing the path is call an existing &lt;b&gt;base command&lt;/b&gt;. For example, you may want your custom command to modify the normal output of the &lt;i&gt;UNC Path&lt;/i&gt; command. To choose the base command, simply select it in the listbox that is located in the &lt;i&gt;Base Command&lt;/i&gt; tab of the dialog box.&lt;br /&gt;
&lt;h5&gt;Configuring options&lt;/h5&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313336" alt="EndUser_CustomCommand_Tab2.png" title="EndUser_CustomCommand_Tab2.png" /&gt;&lt;br /&gt;&lt;br /&gt;The second tab of the dialog box, named &lt;i&gt;Options&lt;/i&gt;, can be used to alter the path that will be copied to the clipboard when the custom command is invoked. There are several options to choose from.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Enclose path in quotation marks:&lt;/b&gt; As the checkbox says, this will cause the path to be surrounded by quotes. Note: if you also choose this option globally, there will be two pair of quotes around the path!&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Change slashes:&lt;/b&gt; Causes all forward slashes ( / ) in the path to be converted to backslashes ( \ ), or vice-versa.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Find / Replace:&lt;/b&gt; Will perform a find/replace operation in the path, replacing all instances of the text entered in the &lt;i&gt;Find what&lt;/i&gt; edit box with the text in the &lt;i&gt;Replace with&lt;/i&gt; edit box.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Once you are satisfied with your configuration, press the &lt;i&gt;OK&lt;/i&gt; button at the bottom of the dialog box to save the custom command. You can cancel the creation/editing by pressing the &lt;i&gt;Cancel&lt;/i&gt; button.&lt;br /&gt;
&lt;h2&gt;Questions? Issues?&lt;/h2&gt;
This concludes the little End-User documentation for Path Copy Copy. If you have a question regarding any aspect of the software, you can post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions" class="externalLink"&gt;Discussions&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; section. If you have an issue (either because of a bug, a feature not working as it should or even a feature you would like to see implemented), do not hesitate to enter a work item in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/workitem/list/basic" class="externalLink"&gt;Issue Tracker&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. If the information you were looking for is not here, you can try to look in the two other subsections, &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Documentation"&gt;Network Administrator&lt;/a&gt; and &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Documentation"&gt;Developer&lt;/a&gt;.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Mon, 06 Feb 2012 01:59:49 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20120206015949A</guid></item><item><title>Updated Wiki: Network Administrator</title><link>http://pathcopycopy.codeplex.com/wikipage?title=Network Administrator&amp;version=12</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;&lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User&lt;/a&gt;  |  Network Administrator  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Network%20Administrator"&gt;Developer&lt;/a&gt;&lt;/h5&gt;&lt;hr /&gt;
This subsection of the documentation is aimed at network administrators looking to preinstall or remotely install Path Copy Copy on their users&amp;#39; computer. The Path Copy Copy installer supports several command-line options to do so, as well as to preconfigure default options.&lt;br /&gt;
&lt;h2&gt;Network installation&lt;/h2&gt;
The Path Copy Copy setup application has been built using &lt;a href="http://www.jrsoftware.org/isinfo.php" class="externalLink"&gt;Inno Setup&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and as such it supports all the standard Inno Setup &lt;b&gt;&lt;a href="http://www.jrsoftware.org/ishelp/index.php?topic=setupcmdline" class="externalLink"&gt;command-line parameters&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. Here is a non-exhaustive list of the parameters that can be useful to a network administrator. For the complete list of options please refer to the Inno Setup website.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;/SP-&lt;/b&gt; : Suppresses the &lt;i&gt;This will install Path Copy Copy...&lt;/i&gt; message at the start of the installation.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/VERYSILENT&lt;/b&gt; : Suppresses the installation and progress windows. If a reboot is needed, it is executed without asking at end of setup.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/SUPPRESSMSGBOXES&lt;/b&gt; : Suppresses all prompts, error messages, etc. during setup.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/NORESTART&lt;/b&gt; : Prevents setup from restarting the computer if a reboot was required during installation. This can be useful when installing on a computer that could be in use.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/DIR=&amp;quot;&lt;i&gt;directory path&lt;/i&gt;&amp;quot;&lt;/b&gt; : Instructs setup to install Path Copy Copy in &lt;i&gt;directory path&lt;/i&gt; instead of the default directory in Program Files.&lt;/li&gt;&lt;/ul&gt;
A combination of these command-line options should probably be sufficient for typical network installations.&lt;br /&gt;
&lt;h2&gt;Setting default options&lt;/h2&gt;
Path Copy Copy is configurable via its &lt;i&gt;Settings&lt;/i&gt; application (see the &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;) and saves its settings in the Windows registry. When it needs a value for a setting, it first looks in the user&amp;#39;s own registry key and if no value is found, it looks in a global registry key that applies to all users on the computer (in other, more technical words, it looks in HKEY_CURRENT_USER first, then in HKEY_LOCAL_MACHINE). The Path Copy Copy setup allows you to configure default values for any setting by using command-line parameters:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;/PCCREGVALUEDWORD=&amp;quot;&lt;i&gt;name&lt;/i&gt;,&lt;i&gt;value&lt;/i&gt;&amp;quot;&lt;/b&gt; : Instructs setup to create a registry value of type REG_DWORD named &lt;i&gt;name&lt;/i&gt; and containing the value &lt;i&gt;value&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/PCCREGVALUESZ=&amp;quot;&lt;i&gt;name&lt;/i&gt;,&lt;i&gt;value&lt;/i&gt;&amp;quot;&lt;/b&gt; : Instructs setup to create a registry value of type REG_SZ (in other words, string) named &lt;i&gt;name&lt;/i&gt; and containing the value &lt;i&gt;value&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/PCCREGPIPELINEPLUGIN=&amp;quot;&lt;i&gt;id&lt;/i&gt;,&lt;i&gt;pipeline&lt;/i&gt;,&lt;i&gt;description&lt;/i&gt;&amp;quot;:&lt;/b&gt; Instructs setup to create a &lt;i&gt;custom command&lt;/i&gt; with the information provided. See below for more details.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/PCCREGPIPELINEPLUGINSDISPLAYORDER=&amp;quot;&lt;i&gt;id&lt;/i&gt;,&lt;i&gt;id&lt;/i&gt;,...&amp;quot;:&lt;/b&gt; Instructs setup to save the display order of custom commands. The display order is a comma-separated list of custom command IDs.&lt;/li&gt;&lt;/ul&gt;
Each setting in Path Copy Copy has its own registry value name. Here is a list of all available values, their data types, accepted values and purpose.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Value name &lt;/th&gt;&lt;th&gt; Data type &lt;/th&gt;&lt;th&gt; Possible values &lt;/th&gt;&lt;th&gt; Purpose &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;AddQuotes&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (no) or &lt;b&gt;1&lt;/b&gt; (yes) &lt;/td&gt;&lt;td&gt; If set to 1, will cause Path Copy Copy to surround all copied paths with quotes (&amp;quot;). &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;UseHiddenShares&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (no) or &lt;b&gt;1&lt;/b&gt; (yes) &lt;/td&gt;&lt;td&gt; If set to 1, Path Copy Copy will use hidden shares when looking for UNC paths (see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;). &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;AlwaysShowSubmenu&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (no) or &lt;b&gt;1&lt;/b&gt; (yes) &lt;/td&gt;&lt;td&gt; If set to 0, user will have to hold down the Shift key while right-clicking on a file to get the submenu with all commands. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;DefaultPlugin&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_SZ &lt;/td&gt;&lt;td&gt; Plugin ID (see below) &lt;/td&gt;&lt;td&gt; ID of the command (or &lt;b&gt;plugin&lt;/b&gt;) that will be shown directly in the main contextual menu (see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;). &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;DisabledPlugins&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_SZ &lt;/td&gt;&lt;td&gt; Comma-separated list of plugin IDs &lt;/td&gt;&lt;td&gt; IDs of plugins to disable, e.g. no longer show them in the submenu. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;KeyLock&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (unlocked) or &lt;b&gt;1&lt;/b&gt; (locked) &lt;/td&gt;&lt;td&gt; If set to 1, will prevent the user from changing the settings. The &lt;i&gt;Settings&lt;/i&gt; menu item will not show up in the submenu and launching the Settings application by hand will give an error message. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Some values refer to specific commands. These are called &lt;b&gt;plugins&lt;/b&gt; in Path Copy Copy speech. Each command seen in the menu has an internal &lt;i&gt;plugin ID&lt;/i&gt;. The following table lists all plugins provided by default along with their IDs.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Command &lt;/th&gt;&lt;th&gt; Plugin ID &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short Name &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {C8757DCA-1BA8-48d0-8145-B93BBB9237AF} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long Name &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {3A42B5C6-72D6-4a8a-BA44-014FA64AA11A} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {93B362D1-2B13-467a-B618-6784F24F3BA1} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {331A3B60-AF49-44f4-B30D-56ADFF6D25E8} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {0929538B-5F52-4480-9902-2BBEC9C84905} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {349939D7-780F-43fd-A98E-83D9ADD44E22} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short UNC Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {891F9E3E-0B70-49fd-A86C-53B21C6193C7} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long UNC Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {EA24BCC3-35F5-46b9-A2A5-A12A0AED2D28} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short UNC Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {73188FB3-8E14-409c-95EF-BA608FDC1274} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long UNC Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {E2C942AC-917C-4aee-A867-8F6AB960BA76} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Internet Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {8F2ADCCC-9693-407d-9300-FCCB9A12B982} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Unix Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {5B5DA5CB-3284-45a9-A1E5-4D6B03107924} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Cygwin Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {CD50DCE3-9A5C-4adf-B552-1741361567D6} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;One switch allows you to pre-install some custom commands (see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;) on the computer. These are called &lt;b&gt;pipeline plugins&lt;/b&gt; in Path Copy Copy speech. Since their serialization is a bit complex, the easiest way to do it is to create the custom command on your computer and go in the registry to fetch the values needed to pass to the setup exe. Custom commands are stored in the &lt;i&gt;SOFTWARE\clechasseur\PathCopyCopy\PipelinePlugins&lt;/i&gt; key under HKEY_CURRENT_USER. The picture below shows you the various parts needed to create the setup command-line switch.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313338" alt="NetworkAdmin_DefaultOptions_PipelinePluginInRegistry.png" title="NetworkAdmin_DefaultOptions_PipelinePluginInRegistry.png" /&gt;&lt;br /&gt;&lt;br /&gt;Please note that if you add custom commands via the setup, their IDs can also be used for any configuration value that takes a plugin ID, such as &lt;b&gt;DefaultPlugin&lt;/b&gt;.&lt;br /&gt;
&lt;h2&gt;Questions? Issues?&lt;/h2&gt;
This concludes the Network Administrator documentation for Path Copy Copy. If you have a question regarding any aspect of the software, you can post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions" class="externalLink"&gt;Discussions&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; section. If something is not working as documented, do not hesitate to enter a work item in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/workitem/list/basic" class="externalLink"&gt;Issue Tracker&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Fri, 23 Dec 2011 04:53:29 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Network Administrator 20111223045329A</guid></item><item><title>Updated Wiki: Network Administrator</title><link>http://pathcopycopy.codeplex.com/wikipage?title=Network Administrator&amp;version=11</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;&lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User&lt;/a&gt;  |  Network Administrator  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Network%20Administrator"&gt;Developer&lt;/a&gt;&lt;/h5&gt;&lt;hr /&gt;
This subsection of the documentation is aimed at network administrators looking to preinstall or remotely install Path Copy Copy on their users&amp;#39; computer. The Path Copy Copy installer supports several command-line options to do so, as well as to preconfigure default options.&lt;br /&gt;
&lt;h2&gt;Network installation&lt;/h2&gt;
The Path Copy Copy setup application has been built using &lt;a href="http://www.jrsoftware.org/isinfo.php" class="externalLink"&gt;Inno Setup&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and as such it supports all the standard Inno Setup &lt;b&gt;&lt;a href="http://www.jrsoftware.org/ishelp/index.php?topic=setupcmdline" class="externalLink"&gt;command-line parameters&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. Here is a non-exhaustive list of the parameters that can be useful to a network administrator. For the complete list of options please refer to the Inno Setup website.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;/SP-&lt;/b&gt; : Suppresses the &lt;i&gt;This will install Path Copy Copy...&lt;/i&gt; message at the start of the installation.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/VERYSILENT&lt;/b&gt; : Suppresses the installation and progress windows. If a reboot is needed, it is executed without asking at end of setup.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/SUPPRESSMSGBOXES&lt;/b&gt; : Suppresses all prompts, error messages, etc. during setup.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/NORESTART&lt;/b&gt; : Prevents setup from restarting the computer if a reboot was required during installation. This can be useful when installing on a computer that could be in use.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/DIR=&amp;quot;&lt;i&gt;directory path&lt;/i&gt;&amp;quot;&lt;/b&gt; : Instructs setup to install Path Copy Copy in &lt;i&gt;directory path&lt;/i&gt; instead of the default directory in Program Files.&lt;/li&gt;&lt;/ul&gt;
A combination of these command-line options should probably be sufficient for typical network installations.&lt;br /&gt;
&lt;h2&gt;Setting default options&lt;/h2&gt;
Path Copy Copy is configurable via its &lt;i&gt;Settings&lt;/i&gt; application (see the &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;) and saves its settings in the Windows registry. When it needs a value for a setting, it first looks in the user&amp;#39;s own registry key and if no value is found, it looks in a global registry key that applies to all users on the computer (in other, more technical words, it looks in HKEY_CURRENT_USER first, then in HKEY_LOCAL_MACHINE). The Path Copy Copy setup allows you to configure default values for any setting by using command-line parameters:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;/PCCREGVALUEDWORD=&amp;quot;&lt;i&gt;name&lt;/i&gt;,&lt;i&gt;value&lt;/i&gt;&amp;quot;&lt;/b&gt; : Instructs setup to create a registry value of type REG_DWORD named &lt;i&gt;name&lt;/i&gt; and containing the value &lt;i&gt;value&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/PCCREGVALUESZ=&amp;quot;&lt;i&gt;name&lt;/i&gt;,&lt;i&gt;value&lt;/i&gt;&amp;quot;&lt;/b&gt; : Instructs setup to create a registry value of type REG_SZ (in other words, string) named &lt;i&gt;name&lt;/i&gt; and containing the value &lt;i&gt;value&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/PCCREGPIPELINEPLUGIN=&amp;quot;&lt;i&gt;id&lt;/i&gt;,&lt;i&gt;pipeline&lt;/i&gt;,&lt;i&gt;description&lt;/i&gt;&amp;quot;:&lt;/b&gt; Instructs setup to create a &lt;i&gt;custom command&lt;/i&gt; with the information provided. See below for more details.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;/PCCREGPIPELINEPLUGINSDISPLAYORDER=&amp;quot;&lt;i&gt;id&lt;/i&gt;,&lt;i&gt;id&lt;/i&gt;,...&amp;quot;:&lt;/b&gt; Instructs setup to save the display order of custom commands. The display order is a comma-separated list of custom command IDs.&lt;/li&gt;&lt;/ul&gt;
Each setting in Path Copy Copy has its own registry value name. Here is a list of all available values, their data types, accepted values and purpose.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Value name &lt;/th&gt;&lt;th&gt; Data type &lt;/th&gt;&lt;th&gt; Possible values &lt;/th&gt;&lt;th&gt; Purpose &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;AddQuotes&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (no) or &lt;b&gt;1&lt;/b&gt; (yes) &lt;/td&gt;&lt;td&gt; If set to 1, will cause Path Copy Copy to surround all copied paths with quotes (&amp;quot;). &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;UseHiddenShares&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (no) or &lt;b&gt;1&lt;/b&gt; (yes) &lt;/td&gt;&lt;td&gt; If set to 1, Path Copy Copy will use hidden shares when looking for UNC paths (see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;). &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;AlwaysShowSubmenu&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (no) or &lt;b&gt;1&lt;/b&gt; (yes) &lt;/td&gt;&lt;td&gt; If set to 0, user will have to hold down the Shift key while right-clicking on a file to get the submenu with all commands. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;DefaultPlugin&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_SZ &lt;/td&gt;&lt;td&gt; Plugin ID (see below) &lt;/td&gt;&lt;td&gt; ID of the command (or &lt;b&gt;plugin&lt;/b&gt;) that will be shown directly in the main contextual menu (see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;). &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;DisabledPlugins&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_SZ &lt;/td&gt;&lt;td&gt; Comma-separated list of plugin IDs &lt;/td&gt;&lt;td&gt; IDs of plugins to disable, e.g. no longer show them in the submenu. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;KeyLock&lt;/b&gt; &lt;/td&gt;&lt;td&gt; REG_DWORD &lt;/td&gt;&lt;td&gt; &lt;b&gt;0&lt;/b&gt; (unlocked) or &lt;b&gt;1&lt;/b&gt; (locked) &lt;/td&gt;&lt;td&gt; If set to 1, will prevent the user from changing the settings. The &lt;i&gt;Settings&lt;/i&gt; menu item will not show up in the submenu and launching the Settings application by hand will give an error message. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Some values refer to specific commands. These are called &lt;b&gt;plugins&lt;/b&gt; in Path Copy Copy speech. Each command seen in the menu has an internal &lt;i&gt;plugin ID&lt;/i&gt;. The following table lists all plugins provided by default along with their IDs.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Command &lt;/th&gt;&lt;th&gt; Plugin ID &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short Name &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {C8757DCA-1BA8-48d0-8145-B93BBB9237AF} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long Name &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {3A42B5C6-72D6-4a8a-BA44-014FA64AA11A} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {93B362D1-2B13-467a-B618-6784F24F3BA1} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {331A3B60-AF49-44f4-B30D-56ADFF6D25E8} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {0929538B-5F52-4480-9902-2BBEC9C84905} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {349939D7-780F-43fd-A98E-83D9ADD44E22} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short UNC Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {891F9E3E-0B70-49fd-A86C-53B21C6193C7} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long UNC Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {EA24BCC3-35F5-46b9-A2A5-A12A0AED2D28} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Short UNC Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {73188FB3-8E14-409c-95EF-BA608FDC1274} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Long UNC Parent Folder Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {E2C942AC-917C-4aee-A867-8F6AB960BA76} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Internet Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {8F2ADCCC-9693-407d-9300-FCCB9A12B982} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Unix Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {5B5DA5CB-3284-45a9-A1E5-4D6B03107924} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Cygwin Path &lt;/td&gt;&lt;td&gt; &lt;span class="codeInline"&gt; {CD50DCE3-9A5C-4adf-B552-1741361567D6} &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Once switch allows you to pre-install some custom commands (see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Network%20Administrator"&gt;End-User tab&lt;/a&gt;) on the computer. These are called &lt;b&gt;pipeline plugins&lt;/b&gt; in Path Copy Copy speech. Since their serialization is a bit complex, the easiest way to do it is to create the custom command on your computer and go in the registry to fetch the values needed to pass to the setup exe. Custom commands are stored in the &lt;i&gt;SOFTWARE\clechasseur\PathCopyCopy\PipelinePlugins&lt;/i&gt; key under HKEY_CURRENT_USER. The picture below shows you the various parts needed to create the setup command-line switch.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313338" alt="NetworkAdmin_DefaultOptions_PipelinePluginInRegistry.png" title="NetworkAdmin_DefaultOptions_PipelinePluginInRegistry.png" /&gt;&lt;br /&gt;&lt;br /&gt;Please note that if you add custom commands via the setup, their IDs can also be used for any configuration value that takes a plugin ID, such as &lt;b&gt;DefaultPlugin&lt;/b&gt;.&lt;br /&gt;
&lt;h2&gt;Questions? Issues?&lt;/h2&gt;
This concludes the Network Administrator documentation for Path Copy Copy. If you have a question regarding any aspect of the software, you can post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions" class="externalLink"&gt;Discussions&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; section. If something is not working as documented, do not hesitate to enter a work item in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/workitem/list/basic" class="externalLink"&gt;Issue Tracker&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Sun, 11 Dec 2011 20:57:08 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Network Administrator 20111211085708P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://pathcopycopy.codeplex.com/documentation?version=10</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;End-User  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Documentation"&gt;Network Administrator&lt;/a&gt;  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Documentation"&gt;Developer&lt;/a&gt;&lt;/h5&gt;&lt;hr /&gt;
Welcome to the Path Copy Copy documentation. It has been divided into three subsections that you can access via the links at the top of the page.&lt;br /&gt;This subsection contains information for end-users looking to install and use Path Copy Copy.&lt;br /&gt;
&lt;h2&gt;Purpose&lt;/h2&gt;
Path Copy Copy is an extension for &lt;b&gt;Windows Explorer&lt;/b&gt; (and alternative shell programs) that allows you to quickly copy to the clipboard the &lt;b&gt;path&lt;/b&gt; of a file, folder or group of files. A file&amp;#39;s path represents the location of the file in the filesystem. It usually begins with a drive letter (except for network paths) and is composed of zero or more directories, ending with the file&amp;#39;s name.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297062" alt="EndUser_Purpose_Path.png" title="EndUser_Purpose_Path.png" /&gt;
&lt;h6&gt;Path of this file: C:\Example\Sample File.txt&lt;/h6&gt;
&lt;br /&gt;Having a file&amp;#39;s path can be useful to paste it in another program asking for a file. For example, you can paste the full path of a file in an Open dialog box to quickly open a file without having to navigate to it by hand. If you had an Explorer window already open at the file&amp;#39;s location, you can save time. It can also be useful when launching a program from the command-line. There are other uses too; it depends on your workflow. (Note that if you are unsure if Path Copy Copy is useful for you, you can try it for a while and simply uninstall it if you don&amp;#39;t find yourself using it enough.)&lt;br /&gt;
&lt;h2&gt;Requirements&lt;/h2&gt;
In order to install and use Path Copy Copy, your computer needs to meet these minimum requirements.
&lt;ul&gt;&lt;li&gt;Windows XP with Service Pack 2, Windows Vista, Windows 7, Windows Server 2003, Windows Server 2008 or Windows Server 2008 R2&lt;/li&gt;
&lt;li&gt;.NET Framework 2.0 (will most likely be already installed on all these OSes - otherwise, install via Windows Update)&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Installing&lt;/h2&gt;
Installing Path Copy Copy is easy. Simply download the latest release by selecting &lt;b&gt;Downloads&lt;/b&gt; from the list of project pages above, download the setup exe and execute it. An installation wizard will show up to help you with the installation.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297066" alt="EndUser_Installing_WizardWelcome.png" title="EndUser_Installing_WizardWelcome.png" /&gt;
&lt;h6&gt;The Welcome page of the Path Copy Copy&amp;#39;s installation wizard&lt;/h6&gt;
&lt;br /&gt;Simply keep clicking Next to navigate the wizard pages (you will have to agree to the Path Copy Copy &lt;a href="http://pathcopycopy.codeplex.com/license" class="externalLink"&gt;license&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; at some point). The default installation directory is usually OK, but you can install Path Copy Copy anywhere that is accessible to all users of the computer. After the wizard finishes, setup simply disappears and Path Copy Copy is ready for use.&lt;br /&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
Using Path Copy Copy is also simple. Simply right-click on a file, folder or group of files in the Windows Explorer&amp;#39;s window and the contextual menu that shows up will now include two things: a Path Copy Copy &lt;b&gt;default command&lt;/b&gt; as well as a submenu containing &lt;b&gt;all commands available&lt;/b&gt;. The submenu will also include an item to open the &lt;b&gt;settings&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297071" alt="EndUser_Usage_MenuItems.png" title="EndUser_Usage_MenuItems.png" /&gt;
&lt;h6&gt;The various parts of Path Copy Copy&lt;/h6&gt;
&lt;br /&gt;Selecting the default command will copy the selected file&amp;#39;s full path to the clipboard. Other path formats are available by selecting them from the submenu:
&lt;ul&gt;&lt;li&gt;Just the file&amp;#39;s &lt;b&gt;name&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Short&lt;/b&gt; path format, which corresponds to the old MS-DOS 8.3 format. Note that this format guarantees that the path contains no spaces.&lt;/li&gt;
&lt;li&gt;The file&amp;#39;s &lt;b&gt;parent folder&lt;/b&gt; path (useful to quickly navigate to that folder).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;UNC&lt;/b&gt; paths, also known as network paths - useful if you have mapped network drives or files to share with others over a corporate network.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Internet&lt;/b&gt; path, using the file:// protocol and with escaped whitespaces - useful to open the file in a Web Browser.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Unix&lt;/b&gt; and &lt;b&gt;Cygwin&lt;/b&gt; paths, using forward slashes (/) instead of backslashes (\) to separate directories - useful if you&amp;#39;re using Unix utilities.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Options&lt;/h2&gt;
Choosing the &lt;i&gt;Settings&lt;/i&gt; item in Path Copy Copy&amp;#39;s submenu will launch an application allowing you to customize some of Path Copy Copy&amp;#39;s behavior. This application has a tabbed interface and three buttons at the bottom. To edit the settings and save, press either the &lt;b&gt;Apply&lt;/b&gt; or &lt;b&gt;OK&lt;/b&gt; button. To close without saving changes to the settings, press the &lt;b&gt;Cancel&lt;/b&gt; button.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; it&amp;#39;s possible that the Settings item is not present if Path Copy Copy has been installed by your network administrator and its settings have been locked.
&lt;h4&gt;Options tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313330" alt="EndUser_Options_Tab1.png" title="EndUser_Options_Tab1.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab contains checkboxes for the following options:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Add quotes around copied paths:&lt;/b&gt; Paths copied will be surrounded by quotes (&amp;quot;).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use hidden shares when copying UNC paths:&lt;/b&gt; Hidden shares are those ending with a dollar sign ($). Creating such a share means it won&amp;#39;t show up when other network users look for shares on your machine, but if someone knows the share name, it can be used to access the share. By default, Path Copy Copy does not consider such shares when looking for a share path for a file. If this is selected, hidden shares will be considered. Please note that this also includes administrative shares (\\computername\C$, for example).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Always show submenu:&lt;/b&gt; Selected by default, this option makes it so that Path Copy Copy&amp;#39;s submenu is always shown in the shell&amp;#39;s contextual menu. If this is deselected, you will need to hold down the Shift key while right-clicking on a file to see the submenu.&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;Default Command tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313331" alt="EndUser_Options_Tab2.png" title="EndUser_Options_Tab2.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab allows you to change what the &lt;b&gt;default command&lt;/b&gt; will be (the command that shows up directly in the shell&amp;#39;s contextual menu). By default, this is set to &lt;b&gt;Copy Long Path&lt;/b&gt;, but it can be changed to anything else. Please note that other commands will still be available in the submenu.&lt;br /&gt;
&lt;h4&gt;Disabled Commands tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313332" alt="EndUser_Options_Tab3.png" title="EndUser_Options_Tab3.png" /&gt;&lt;br /&gt;&lt;br /&gt;In this tab, you can uncheck individual commands so that they no longer show up in the contextual menu. This can be useful if you never use some of the commands and find they take up a lot of space in the menu. For example, some users could choose to disable the UNC commands if their computer is not on a corporate network.&lt;br /&gt;
&lt;h4&gt;Custom Commands tab&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313333" alt="EndUser_Options_Tab4.png" title="EndUser_Options_Tab4.png" /&gt;&lt;br /&gt;&lt;br /&gt;This tab allows you to configure &lt;b&gt;custom commands&lt;/b&gt; that can decide how the path will be copied to the clipboard. This tab contains a list of all existing custom commands as well as several buttons to manipulate them. The &lt;i&gt;Move Up&lt;/i&gt; and &lt;i&gt;Move Down&lt;/i&gt; buttons allow you to organize the custom commands in the order you see fit. The &lt;i&gt;New&lt;/i&gt; button will open another dialog to create a custom command (see below). The &lt;i&gt;Edit&lt;/i&gt; button allows you to modify the behavior of an existing custom command. Finally, the &lt;i&gt;Remove&lt;/i&gt; button allows you to remove custom commands from the submenu.&lt;br /&gt;&lt;br /&gt;Once defined, custom commands can be chosed as the default command, or can be enabled/disabled as normal. Also note that custom commands are &lt;i&gt;user-specific&lt;/i&gt; - each user account has its own custom commands (except if some are pre-installed by your network administrator).&lt;br /&gt;
&lt;h4&gt;Custom Command dialog box&lt;/h4&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313335" alt="EndUser_CustomCommand_Tab1.png" title="EndUser_CustomCommand_Tab1.png" /&gt;&lt;br /&gt;&lt;br /&gt;This dialog, spawned by either the &lt;i&gt;New&lt;/i&gt; or &lt;i&gt;Edit&lt;/i&gt; buttons of the &lt;i&gt;Custom Commands&lt;/i&gt; tab of the settings application, allows you to configure the behavior of a custom command. Each custom command can be given a &lt;b&gt;name&lt;/b&gt; that will be used to display the command in the Path Copy Copy submenu. Next, there are two steps to configuring the custom command.&lt;br /&gt;
&lt;h5&gt;Choosing a base command&lt;/h5&gt;
The first step that a custom command will perform when computing the path is call an existing &lt;b&gt;base command&lt;/b&gt;. For example, you may want your custom command to modify the normal output of the &lt;i&gt;UNC Path&lt;/i&gt; command. To choose the base command, simply select it in the listbox that is located in the &lt;i&gt;Base Command&lt;/i&gt; tab of the dialog box.&lt;br /&gt;
&lt;h5&gt;Configuring options&lt;/h5&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=313336" alt="EndUser_CustomCommand_Tab2.png" title="EndUser_CustomCommand_Tab2.png" /&gt;&lt;br /&gt;&lt;br /&gt;The second tab of the dialog box, named &lt;i&gt;Options&lt;/i&gt;, can be used to alter the path that will be copied to the clipboard when the custom command is invoked. There are several options to choose from.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Enclose path in quotation marks:&lt;/b&gt; As the checkbox says, this will cause the path to be surrounded by quotes. Note: if you also choose this option globally, there will be two pair of quotes around the path!&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Change slashes:&lt;/b&gt; Causes all forward slashes ( / ) in the path to be converted to backslashes ( \ ), or vice-versa.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Find / Replace:&lt;/b&gt; Will perform a find/replace operation in the path, replacing all instances of the text entered in the &lt;i&gt;Find what&lt;/i&gt; edit box with the text in the &lt;i&gt;Replace with&lt;/i&gt; edit box.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Once you are satisfied with your configuration, press the &lt;i&gt;OK&lt;/i&gt; button at the bottom of the dialog box to save the custom command. You can cancel the creation/editing by pressing the &lt;i&gt;Cancel&lt;/i&gt; button.&lt;br /&gt;
&lt;h2&gt;Questions? Issues?&lt;/h2&gt;
This concludes the little End-User documentation for Path Copy Copy. If you have a question regarding any aspect of the software, you can post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions" class="externalLink"&gt;Discussions&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; section. If you have an issue (either because of a bug, a feature not working as it should or even a feature you would like to see implemented), do not hesitate to enter a work item in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/workitem/list/basic" class="externalLink"&gt;Issue Tracker&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. If the information you were looking for is not here, you can try to look in the two other subsections, &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Documentation"&gt;Network Administrator&lt;/a&gt; and &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;referringTitle=Documentation"&gt;Developer&lt;/a&gt;.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Sun, 11 Dec 2011 20:36:42 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20111211083642P</guid></item><item><title>Updated Wiki: Developer</title><link>http://pathcopycopy.codeplex.com/wikipage?title=Developer&amp;version=20</link><description>&lt;div class="wikidoc"&gt;&lt;h5&gt;&lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Developer"&gt;End-User&lt;/a&gt;  |  &lt;a href="http://pathcopycopy.codeplex.com/wikipage?title=Network%20Administrator&amp;referringTitle=Developer"&gt;Network Administrator&lt;/a&gt;  |  Developer&lt;/h5&gt;&lt;hr /&gt;
This subsection of the documentation is aimed at software developers interested in Path Copy Copy. It is divided into two parts: developers looking to build Path Copy Copy from source, and developers looking to create their own Path Copy Copy commands (also known as &lt;b&gt;plugins&lt;/b&gt;).&lt;br /&gt;
&lt;h2&gt;Getting the source&lt;/h2&gt;
Path Copy Copy uses &lt;b&gt;&lt;a href="http://mercurial.selenic.com/" class="externalLink"&gt;Mercurial&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; for its source control. For those of you not familiar with it, Mercurial is a distributed version control system - this means that each developer has a full copy of the repository on his/her machine. (&lt;a href="http://hginit.com/" class="externalLink"&gt;HgInit&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; might also be a good place to start if you&amp;#39;re new to Mercurial.)&lt;br /&gt;&lt;br /&gt;There are two ways to get the source for Path Copy Copy in order to build it. The first one is to use a Mercurial client to &lt;b&gt;clone&lt;/b&gt; the Path Copy Copy repository. The clone URL to use is &lt;b&gt;https://hg01.codeplex.com/pathcopycopy&lt;/b&gt;. You can use any Mercurial client to do this. On Windows, &lt;a href="http://tortoisehg.bitbucket.org/" class="externalLink"&gt;TortoiseHg&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; is a popular graphical Mercurial client that works well.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297461" alt="Developer_GettingTheSource_CloneRepoTortoiseHg.png" title="Developer_GettingTheSource_CloneRepoTortoiseHg.png" /&gt;
&lt;h6&gt;Cloning the Path Copy Copy repository with TortoiseHg&lt;/h6&gt;
&lt;br /&gt;Once the clone operation completes, you can go in your chosen destination folder and see all Path Copy Copy project files.&lt;br /&gt;&lt;br /&gt;The second way to get the source is to download a pre-packaged revision. You can do so by going to the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/SourceControl/list/changesets" class="externalLink"&gt;Source Code&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; tab and click on the Download link just under &lt;b&gt;Latest Version&lt;/b&gt; on the right-hand side. After agreeing to the license, you will be able to download a complete version of the Path Copy Copy project files as a ZIP archive. Simply unzip it anywhere to be able to use it.&lt;br /&gt;&lt;br /&gt;Whatever mean you choose to get the source, once you have it, you should probably read the README.TXT in the root directory. This file is a quick list of most other files in the Path Copy Copy source tree and is aimed at developers to read.&lt;br /&gt;
&lt;h2&gt;Building the shell extension&lt;/h2&gt;
Path Copy Copy has been developed using &lt;b&gt;Microsoft Visual Studio&lt;/b&gt;. Although it might be possible to adapt the source to build it with another tool, it has never been attempted. Make sure you meet the minimum prerequisites listed on the right before you attempt to build any part of the source.&lt;br /&gt;&lt;br /&gt;Path Copy Copy is divided into two components, each with its own Visual Studio solution: the shell extension (responsible for adding the menu items in the shell&amp;#39;s contextual menu) and the settings application (launched with the user chooses &lt;i&gt;Settings&lt;/i&gt; in the menu - see &lt;a href="http://pathcopycopy.codeplex.com/documentation?referringTitle=Developer"&gt;End-User tab&lt;/a&gt;). In order to build the shell extension, open the &lt;b&gt;PathCopyCopy.sln&lt;/b&gt; file.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297466" alt="Developer_BuildingShellExt_PathCopyCopySln.png" title="Developer_BuildingShellExt_PathCopyCopySln.png" /&gt;
&lt;h6&gt;The PathCopyCopy solution&lt;/h6&gt;
&lt;br /&gt;This solution contains two projects: &lt;b&gt;PathCopyCopy&lt;/b&gt; and &lt;b&gt;TestPlugins&lt;/b&gt;. The second project simply contains plugin implementations used for testing purposes and are never shipped with Path Copy Copy. Thus, this project is out of the scope of this documentation. Feel free to examine it if you want.&lt;br /&gt;&lt;br /&gt;The Path Copy Copy shell extension is written in C++ and uses ATL. It is made of several different source files. Although this documentation won&amp;#39;t dig into the structure of the code itself, feel free to do so on your own if you want to learn how Path Copy Copy works (especially the &lt;i&gt;PathCopyCopyContextMenuExt&lt;/i&gt; class and the various &lt;i&gt;Plugins&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;The PathCopyCopy project has two configurations, &lt;b&gt;Debug&lt;/b&gt; and &lt;b&gt;Release&lt;/b&gt;, as well as two platforms, &lt;b&gt;Win32&lt;/b&gt; and &lt;b&gt;x64&lt;/b&gt;. The Debug configuration should only be needed if you intend to trace into the Path Copy Copy code, so most likely, you will want to select Release. Also, it is important that each version of Path Copy Copy is built in &lt;b&gt;32-bit&lt;/b&gt; (Win32 platform) and &lt;b&gt;64-bit&lt;/b&gt; (x64 platform) formats, so as to be able to run on any system.&lt;br /&gt;&lt;br /&gt;Once you are ready to build the shell extension, simply choose &lt;i&gt;Batch Build...&lt;/i&gt; under the Build menu, check both &lt;i&gt;Release|Win32&lt;/i&gt; and &lt;i&gt;Release|x64&lt;/i&gt; solution config of the PathCopyCopy project, and click &lt;b&gt;Build&lt;/b&gt;. Building should not take long depending on the speed of your computer.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297471" alt="Developer_BuildingShellExt_BatchBuilding.png" title="Developer_BuildingShellExt_BatchBuilding.png" /&gt;
&lt;h6&gt;Using Batch Build to build both versions of PathCopyCopy&lt;/h6&gt;
&lt;br /&gt;The output files, including the final &lt;b&gt;PathCopyCopy.dll&lt;/b&gt;, are written in the &lt;i&gt;bin&lt;/i&gt; directory under the root source directory. Object files will be in the &lt;i&gt;obj&lt;/i&gt; directory, next to bin. Note that the build mechanism will automatically &lt;i&gt;register&lt;/i&gt; the DLL, as the shell extension is a COM object.&lt;br /&gt;
&lt;h2&gt;Building the settings application&lt;/h2&gt;
When the user selects the &lt;i&gt;Settings...&lt;/i&gt; item in the Path Copy Copy submenu, the shell extension launches the &lt;b&gt;Settings application&lt;/b&gt; to let the user modify the options. This application has its own Visual Studio solution named &lt;b&gt;PathCopyCopySettings.sln&lt;/b&gt;. This solution contains a single project that is written in C# and targets .NET Framework 2.0.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297472" alt="Developer_BuildingSettingsApp_PathCopyCopySettingsSln.png" title="Developer_BuildingSettingsApp_PathCopyCopySettingsSln.png" /&gt;
&lt;h6&gt;The PathCopyCopySettings solution&lt;/h6&gt;
&lt;br /&gt;The Settings project is a &lt;b&gt;Windows Forms&lt;/b&gt; project that has a single form named &lt;b&gt;MainForm&lt;/b&gt;. The other source files contain code to deal with the user settings and plugins. Again, this documentation won&amp;#39;t dig into the code. Feel free to explorer if you want to see how settings are changed.&lt;br /&gt;&lt;br /&gt;The PathCopyCopySettings solution again has two configurations, &lt;b&gt;Debug&lt;/b&gt; and &lt;b&gt;Release&lt;/b&gt;, but a single platform named &lt;b&gt;AnyCPU&lt;/b&gt;. This is because a .NET application is platform-agnostic by default. In our case, it will run as a 32-bit application if the user is on a 32-bit system, and as a 64-bit application if on a 64-bit system. Again, the Debug configuration is only needed to trace in the code, so Release should be used in most circumstances.&lt;br /&gt;&lt;br /&gt;Once you are ready to build the settings application, select &lt;b&gt;Release&lt;/b&gt; from the configuration dropdown and &lt;b&gt;Build Solution&lt;/b&gt; from the &lt;i&gt;Build&lt;/i&gt; menu. The output and object files will be saved in the same place as the shell extension project&amp;#39;s, alongside those files. Please note that although the project is platform-agnostic, it is first built in &lt;b&gt;Win32&lt;/b&gt; and then a post-build step is used to copy it to &lt;b&gt;x64&lt;/b&gt; so that both versions of the shell extension will be successfully able to find the application. The application file is named &lt;b&gt;PathCopyCopySettings.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;After both projects have been built, Path Copy Copy should be ready to use. Since the COM object has been registered after building, simply right-clicking on a file or folder should show up the Path Copy Copy menu items.&lt;br /&gt;
&lt;h2&gt;Building the installer&lt;/h2&gt;
For those who may need to modify Path Copy Copy and redistribute the modified version, building the installer may be needed. Path Copy Copy&amp;#39;s setup has been built using the &lt;b&gt;&lt;a href="http://www.jrsoftware.org/isinfo.php" class="externalLink"&gt;Inno Setup&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; tool. In order to build the installer, make sure you have Inno Setup installed. You also need the Inno Setup Preprocessor, a free add-on. The simplest way to get it all in one package is to use the &lt;b&gt;QuickStart Pack&lt;/b&gt; (see the &lt;a href="http://www.jrsoftware.org/isdl.php" class="externalLink"&gt;Inno Setup download page&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Building the Path Copy Copy setup is easy. Simply open the &lt;b&gt;Setup.iss&lt;/b&gt; file located in the &lt;i&gt;Installer&lt;/i&gt; directory under the root source directory and choose &lt;b&gt;Compile&lt;/b&gt; from the Inno Setup Compiler toolbar. (Note that if you installed InnoIDE using the QuickStart Pack, it will open instead of the Inno Setup Compiler. The same &lt;i&gt;Compile&lt;/i&gt; command exists in its toolbar, however, and works the same way.)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297572" alt="Developer_BuildingInstaller_CompilingIsc.png" title="Developer_BuildingInstaller_CompilingIsc.png" /&gt;
&lt;h6&gt;Compiling the Path Copy Copy setup using Inno Setup Compiler&lt;/h6&gt;
&lt;br /&gt;Once the compilation completes, go back to the &lt;i&gt;Installer&lt;/i&gt; directory and a new directory named &lt;b&gt;Output&lt;/b&gt; will have been created. It will contain the setup application, named &lt;b&gt;PathCopyCopy&lt;i&gt;VersionNumber&lt;/i&gt;.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;This concludes the documentation to build Path Copy Copy from source. Those of you wishing to develop custom plugins can continue to the next section.&lt;br /&gt;
&lt;h2&gt;Plugin development&lt;/h2&gt;
Path Copy Copy has been designed with a modular architecture. Each command seen in the contextual menu is called a &lt;b&gt;plugin&lt;/b&gt; internally. It is possible to create and distribute custom plugins in the form of &lt;b&gt;COM objects&lt;/b&gt; implementing custom Path Copy Copy interfaces. In this chapter, the sample C++ plugin project will be shown, but it should be possible to write custom plugins in any programming language using any environment, as long as it supports COM object development.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note&lt;/b&gt;: it is assumed here that you are familiar with the C++ language and the development of COM objects using the ATL library. Learning to do this is outside the scope of this documentation. Please refer to web tutorials for more information.&lt;br /&gt;&lt;br /&gt;Path Copy Copy ships with a sample Visual C++ project that implements a complete plugin. There are two places where it can be found:
&lt;ul&gt;&lt;li&gt;In Path Copy Copy&amp;#39;s installation directory, under &lt;i&gt;Samples\Plugins\COM\C++&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;In Path Copy Copy&amp;#39;s source tree, under &lt;i&gt;Samples\SampleCOMPluginCpp&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt;
The sample comes with a Visual Studio 2008 solution containing a single project, itself containing only one important class named &lt;b&gt;SamplePathCopyCopyPlugin&lt;/b&gt;. It also uses a file named &lt;b&gt;PathCopyCopy_i.h&lt;/b&gt; that is very important as it contains the definintions of Path Copy Copy&amp;#39;s custom interfaces.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297577" alt="Developer_PluginDevelopment_SampleCOMCppProject.png" title="Developer_PluginDevelopment_SampleCOMCppProject.png" /&gt;
&lt;h6&gt;The sample C++ COM plugin project&lt;/h6&gt;
&lt;br /&gt;Opening &lt;i&gt;SamplePathCopyCopyPlugin.h&lt;/i&gt; will display the declaration of the COM plugin class. In order to showcase them all, the class implements all three Path Copy Copy interfaces.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297726" alt="Developer_PluginDevelopment_SampleClassIntf.png" title="Developer_PluginDevelopment_SampleClassIntf.png" /&gt;
&lt;h6&gt;The sample plugin class&amp;#39; declaration with the Path Copy Copy interfaces&lt;/h6&gt;
&lt;br /&gt;In order to be usable by Path Copy Copy, your plugin COM object needs to implement at least the &lt;b&gt;IPathCopyCopyPlugin&lt;/b&gt; interface. The other interfaces are optional and can be implemented only if needed.
&lt;h4&gt;IPathCopyCopyPlugin interface&lt;/h4&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297727" alt="Developer_PluginDevelopment_IPathCopyCopyPluginIntf.png" title="Developer_PluginDevelopment_IPathCopyCopyPluginIntf.png" /&gt;
&lt;h6&gt;The IPathCopyCopyPlugin methods&lt;/h6&gt;
&lt;br /&gt;Base interface that is required for all Path Copy Copy plugins. In contains three methods:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;get_Description:&lt;/b&gt; Must return the plugin&amp;#39;s description string. Will be displayed in the contextual menu to identify the plugin.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get_HelpText:&lt;/b&gt; Can return a help text that will be shown in the shell&amp;#39;s status bar when the cursor hovers over the plugin&amp;#39;s contextual menu item. It is legal to return &lt;span class="codeInline"&gt;NULL&lt;/span&gt; or an empty string for this.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GetPath:&lt;/b&gt; Main work method invoked by Path Copy Copy when it needs to get the path for a particular file or folder. This method can be called repeatedly if the user selected a group of files. It receives the full path to the file as input and must return a path, modified as needed.&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;IPathCopyCopyPluginGroupInfo interface&lt;/h4&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297729" alt="Developer_PluginDevelopment_IPathCopyCopyGroupInfoIntf.png" title="Developer_PluginDevelopment_IPathCopyCopyGroupInfoIntf.png" /&gt;
&lt;h6&gt;The IPathCopyCopyGroupInfo methods&lt;/h6&gt;
&lt;br /&gt;Optional interface that can be implemented when working on a group of plugins so that they are kept next to each other in the contextual menu. If this interface is not implemented, all custom plugins end up in the same &amp;quot;group&amp;quot; in the menu. This interface allows plugins to group together and determine ordering. It contains two methods:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;get_GroupId:&lt;/b&gt; Must return the &lt;b&gt;group ID&lt;/b&gt; (see below) of the group of plugins to which this plugin belongs to. All plugins with the same group ID will appear in the same block in the contextual menu, surrounded by separators.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get_GroupPosition:&lt;/b&gt; Must return the zero-based position of the plugin within the group. Path Copy Copy will display plugins in ascending order of group position when displaying the group.&lt;/li&gt;&lt;/ul&gt;
Plugin groups are identified by an &lt;b&gt;ID&lt;/b&gt; that is a 32-bit unsigned integer. Since there is no real way to know which IDs are already in use, developers are encouraged to specify their group ID using a four-char code, like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
    STDMETHODIMP MyPlugin::get_GroupId(ULONG *p_pGroupId)
    {
        *p_pGroupId = &amp;#39;MYGP&amp;#39;;
        return S_OK;
    }
&lt;/pre&gt;Furthermore, group IDs composed of all lowercase letters are considered &lt;b&gt;reserved&lt;/b&gt; for internal use.&lt;br /&gt;
&lt;h4&gt;IPathCopyCopyStateInfo interface&lt;/h4&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=pathcopycopy&amp;DownloadId=297837" alt="Developer_PluginDevelopment_IPathCopyCopyStateInfoIntf.png" title="Developer_PluginDevelopment_IPathCopyCopyStateInfoIntf.png" /&gt;
&lt;h6&gt;The IPathCopyCopyStateInfo method&lt;/h6&gt;
&lt;br /&gt;Optional interface that allows a plugin to specify its state in the contextual menu. It contains a single method:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Enabled:&lt;/b&gt; Called when the contextual menu is built to know if the plugin&amp;#39;s entry should be enabled or not. The method receives two information to decide: the &lt;b&gt;path of a file&lt;/b&gt; that was selected by the user, and the &lt;b&gt;path of its parent directory&lt;/b&gt;. In order to be disabled, the method must return &lt;span class="codeInline"&gt;S_OK&lt;/span&gt; and set the &lt;span class="codeInline"&gt;VARIANT_BOOL&lt;/span&gt; parameter to &lt;span class="codeInline"&gt;VARIANT_FALSE&lt;/span&gt;; any other combination of results will leave the plugin enabled.&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;Plugin registration&lt;/h4&gt;
Once your plugin has been developed, it needs to be registered as a COM object as well as with Path Copy Copy. In order to do this, the Path Copy Copy contextual menu extension COM object includes two methods to &lt;b&gt;register&lt;/b&gt; and &lt;b&gt;unregister&lt;/b&gt; a plugin. One place to do this is in the &lt;i&gt;DllRegisterServer&lt;/i&gt; override of your ATL module.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
    // In dllmain.h
    class CMyModule : public CAtlDllModuleT&amp;lt; CMyModule &amp;gt;
    {
    public :
        DECLARE_LIBID(...)
        DECLARE_REGISTRY_APPID_RESOURCEID(...)

        HRESULT DllRegisterServer(BOOL bRegTypeLib = TRUE) throw();
        HRESULT DllUnregisterServer(BOOL bUnRegTypeLib = TRUE) throw();
    };
&lt;/pre&gt;&lt;pre&gt;
    // In dllmain.cpp
    HRESULT CMyModule::DllRegisterServer( BOOL bRegTypeLib /*= TRUE*/ ) throw()
    {
        HRESULT hRes = CAtlDllModuleT&amp;lt; CMyModule &amp;gt;::DllRegisterServer(bRegTypeLib);
        if (SUCCEEDED(hRes)) {
            CComPtr&amp;lt;IPathCopyCopyContextMenuExt&amp;gt; cpPccExt;
            hRes = cpPccExt.CoCreateInstance(__uuidof(PathCopyCopyContextMenuExt));
            if (SUCCEEDED(hRes)) {
                cpPccExt-&amp;gt;RegisterPlugin(__uuidof(MyPlugin));
            }
        }
        return hRes;
    }

    HRESULT CMyModule::DllUnregisterServer( BOOL bUnRegTypeLib /*= TRUE*/ ) throw()
    {
        HRESULT hRes = CAtlDllModuleT&amp;lt; CMyModule &amp;gt;::DllUnregisterServer(bUnRegTypeLib);
        if (SUCCEEDED(hRes)) {
            CComPtr&amp;lt;IPathCopyCopyContextMenuExt&amp;gt; cpPccExt;
            hRes = cpPccExt.CoCreateInstance(__uuidof(PathCopyCopyContextMenuExt));
            if (SUCCEEDED(hRes)) {
                cpPccExt-&amp;gt;UnregisterPlugin(__uuidof(MyPlugin));
            }
        }
        return hRes;
    }
&lt;/pre&gt;&lt;b&gt;IMPORTANT NOTE:&lt;/b&gt; Please do &lt;b&gt;NOT&lt;/b&gt; try to reverse-engineer Path Copy Copy&amp;#39;s plugin registration internals and how plugins are saved. This is not guaranteed to be stable from version to version. The registration interface, however, is guaranteed to always exist.&lt;br /&gt;
&lt;h2&gt;Questions?&lt;/h2&gt;
This concludes the developer documentation for Path Copy Copy. If you have further questions regarding any aspect of development (the source, the build system, plugin development, etc.) please don&amp;#39;t hesitate to post in the &lt;b&gt;&lt;a href="http://pathcopycopy.codeplex.com/discussions" class="externalLink"&gt;Discussions&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; section.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>clechasseur</author><pubDate>Tue, 29 Nov 2011 15:22:58 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Developer 20111129032258P</guid></item></channel></rss>