You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGES
+5-1Lines changed: 5 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,15 @@
1
1
Changes for 0.10.0
2
2
3
+
* **Breaking change:** The _Configuration Files_ directory has moved from `%USERPROFILE%\ShellAnything` to `%USERPROFILE%\ShellAnything\configurations`. Configuration Files in the old directory will move to the new directory automatically on application first launch. Other files in `%USERPROFILE%\ShellAnything` will not be moved.
4
+
* **Breaking change:** The _logs_ directory has moved from `%USERPROFILE%\ShellAnything\Logs` to `%LOCALAPPDATA%\ShellAnything\logs`. The previous logs directory will be removed on application first launch.
3
5
* ShellAnything has a new high-resolution logo icon!
4
6
* Shellanything now features verbose logging mode and command line arguments debugging tools.
5
-
* ShellAnything now packages icons from [icons8/flat-color-icons](https://github.com/icons8/flat-color-icons)
7
+
* ShellAnything now packages icons from [icons8/flat-color-icons](https://github.com/icons8/flat-color-icons).
6
8
9
+
Fixes:
7
10
* Fixed issue #6 : (twice) Right-click on a directory with Windows Explorer in the left panel shows the menus twice.
8
11
* Fixed issue #31 : (twice) Error in logs for CContextMenu::GetCommandString()
12
+
* Fixed issue #108: Separate location for log files ? (and exclusions?)
9
13
* Fixed issue #109: Implement default and verbose logging.
10
14
* Fixed issue #110: Create a simple command line arguments debugging application.
@@ -79,6 +79,7 @@ This manual includes a description of the system functionalities and capabilitie
79
79
*[Troubleshooting](#troubleshooting)
80
80
*[Logging support](#logging-support)
81
81
*[Checkout the _Tools_ section](#tools)
82
+
*[Change the rendering order of your system's shell extension menus](#change-the-rendering-order-of-your-systems-shell-extension-menus)
82
83
*[Missing ampersand character (`&`) in menus](#missing-ampersand-character--in-menus)
83
84
*[Reporting bugs](#reporting-bugs)
84
85
@@ -168,14 +169,16 @@ A *configuration file* contains the definition of all [<menu>](#Menu) elem
168
169
169
170
When a user right-click on a file in *Windows Explorer*, the application will load all available *configuration files* and display their content into the displayed context menu.
170
171
171
-
The list of *Configuration Files* is unique for each users of the system. The files are stored in `C:\Users\%USERNAME%\ShellAnything` directory where `%USERNAME%` is your current Windows session *username*. Note that *Windows Explorer* also support copy & pasting `C:\Users\%USERNAME%\ShellAnything` into an *address bar* to quickly jump to the directory.
172
+
The list of *Configuration Files* is unique for each users of the system. The files are stored in `C:\Users\%USERNAME%\ShellAnything\configurations` directory where `%USERNAME%` is your current Windows session *username*. Note that you can paste `C:\Users\%USERNAME%\ShellAnything\configurations` into an *address bar* of *Windows Explorer* to quickly jump to the directory.
172
173
173
174
The application support multiple *configuration files* at the same time. One can add new files in the *configuration directory* and the system will automatically detect and load them.
174
175
175
176
When a *configuration file* is deleted, the application automatically detect the missing file and properly unload the associated menus which stop displaying their content.
176
177
177
178
To temporary disable a *configuration file*, one can simply change the file extension from `xml` to `txt`. Change the file extension back to `xml` to re-enable the file.
178
179
180
+
**Note:** The *Configuration Files* directory can be modified with the `SA_OPTION_CONFIGURATIONS_DIR` environment variable option. See [Environment Variables options](#environment-variables-options) section for details.
181
+
179
182
180
183
181
184
## Basic Xml Document ##
@@ -1720,9 +1723,21 @@ The system will generates the following property values (note the `\r\n` charact
1720
1723
1721
1724
If you need more flexibility when dealing with multiple files, the system defines the property `selection.multi.separator` that allows customizing the separator when combining multiple files.
1722
1725
1723
-
By default, this property is set to the value `\r\n` (new line) when the application initialize.
1726
+
By default, this property is set to the value `\r\n` (new line) when the application initialize.
1727
+
1728
+
The property can be modified at any time using a [<property>](#property-action) action or with the [<default>](#default) element to change it globally.
1724
1729
1725
-
The property can be modified at any time using a [<property>](#property-action) action for changing the property when a menu is executed or with the [<default>](#default) element to change the value globally (when the `Configuration File` is loaded).
1730
+
If you mostly need the opposite of the default behavior (double-quotes instead of CRLF), override the value of the property globally when the `Configuration File` is loaded :
To reset the property back to the default value, use the following <property> action:
1728
1743
```xml
@@ -1731,7 +1746,7 @@ To reset the property back to the default value, use the following <property&
1731
1746
1732
1747
**Example #1:**
1733
1748
1734
-
If an executable must get the list of selected files in a single command line (one after the other), one can set the property `selection.multi.separator` to`" "` (double quote, space, double quote) and use the string `"${selection.path}"` (including the double quotes) to get the required expanded value:
1749
+
If an executable must get the list of selected files in a single command line (one after the other), one can temporary set the property `selection.multi.separator` to `" "` (double quote, space, double quote) and use the string `"${selection.path}"` (including the double quotes) to get the required expanded value:
1735
1750
1736
1751
```xml
1737
1752
<actions>
@@ -1740,13 +1755,15 @@ If an executable must get the list of selected files in a single command line (o
Assume that you want to run a specific command on each of the selected files (for example reset the files attributes), one can set the property `selection.multi.separator` to `${line.separator}attrib -r -a -s -h "` (including the ending double quote character) and use the string `attrib -r -a -s -h "${selection.filename}"` (including the double quotes) to get the following expanded value:
1766
+
Assume that you want to run a specific command on each of the selected files (for example reset the files attributes), one can set the property `selection.multi.separator` to `${line.separator}attrib -r -a -s -h "` (including the ending double quote character) and use the string `attrib -r -a -s -h "${selection.filename}"` (including the double quotes) to get the following expanded value:
1750
1767
```
1751
1768
attrib -r -a -s -h "C:\Program Files (x86)\Winamp\libFLAC.dll"
1752
1769
attrib -r -a -s -h "C:\Program Files (x86)\Winamp\winamp.exe"
@@ -1807,7 +1824,7 @@ For example, the following would define `services.wce.command.start` and `servic
1807
1824
1808
1825
1809
1826
1810
-
# Environment variables #
1827
+
# Environment Variables options #
1811
1828
1812
1829
ShellAnything default startup behavior can be modified by setting specific pre-defined environment variables. Some features or configuration options can also be enabled or disabled through environment variables. For example, one can define an environment variables to enable verbose logging.
1813
1830
@@ -1819,10 +1836,11 @@ All ShellAnything environment variables names are prefixed with `SA_`.
1819
1836
1820
1837
The following table defines the list of pre-defined environment variables for ShellAnything:
| SA_OPTION_LOGGING_VERBOSE | Enables [verbose logging](#verbose-logging) when set to a value that evaluates to [true](#istrue-attribute). |
1842
+
| SA_OPTION_CONFIGURATIONS_DIR | Set to a custom value to change/override the directory where [Configuration Files](#configuration-files) are stored. |
1843
+
| SA_OPTION_LOGS_DIR | Set to a custom value to change/override the directory where [Log Files](#logging-support) are stored. |
1826
1844
1827
1845
1828
1846
@@ -2636,8 +2654,9 @@ ShellAnything provides logging support for troubleshooting and debugging command
2636
2654
2637
2655
The logging directory is unique for each users of the system.
2638
2656
2639
-
The log files are stored in `C:\Users\%USERNAME%\ShellAnything\Logs` directory where `%USERNAME%` matches your current login username.
2640
-
For example, the user `JohnSmith` can find his own ShellAnything log files in directory `C:\Users\JohnSmith\ShellAnything\Logs`.
2657
+
The log files are stored in `%LOCALAPPDATA%\ShellAnything\logs` directory. For example, the user `JohnSmith` can find his own ShellAnything log files in directory `C:\Users\JohnSmith\AppData\Local\ShellAnything\logs`.
2658
+
2659
+
**Note:** The logging directory can be modified with the `SA_OPTION_LOGS_DIR` environment variable option. See [Environment Variables options](#environment-variables-options) section for details.
2641
2660
2642
2661
2643
2662
@@ -2715,6 +2734,33 @@ If no option is specified, verbose mode is disabled.
2715
2734
2716
2735
2717
2736
2737
+
## Change the rendering order of your system's shell extension menus ##
2738
+
2739
+
ShellAnything does not control in which order the system renders all the registered Shell Extensions. Because of this, your ShellAnything menus could be rendered at the top, middle or the end of Window's Context menu.
2740
+
2741
+
This behavior can however be altered.
2742
+
2743
+
**Note:**
2744
+
Changing the default order of ShellAnything's menu is not officially supported by ShellAnything. The feature is documented as working on Windows 10 (22H2 or later) and Windows 11. This is basically a hack. The method is added to ShellAnything's documentation because some users have a need for it.
2745
+
2746
+
Windows renders the registered Shell Extension alphabetically. For example, to change the rendering order of Shell Extensions for directories, you need to rename the desired shell extension's registry key in `HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shellex\ContextMenuHandlers`.
2747
+
2748
+
For example: you could rename the registry key `HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shellex\ContextMenuHandlers\ShellAnything` to change ShellAnything's menu order in a Windows context menu. You can rename the key to `!ShellAnything` to have ShellAnything's menus rendered to the top of the context menu. Or you can rename the registry key to `ΩShellAnything` to move ShellAnything's menus to the bottom of the context menu.
2749
+
2750
+
This feature is not officially supported. If you unregister or uninstall ShellAnything, the renamed registry key will not be deleted from your system. If you re-register ShellAnything then two registry keys referencing ShellAnything will be registered on the system (`!ShellAnything` and `ShellAnything`). This could lead to adding the menus twice to the context menu.
2751
+
2752
+
Another downside is that you need to do this for every locations in the registry where ShellAnything is registered as a shell extension:
2753
+
2754
+
*`*` (star character)
2755
+
*`Directory`
2756
+
*`Directory\Background`
2757
+
*`Folder`
2758
+
*`Drive`
2759
+
2760
+
There is also shell extensions registered under `AllFilesystemObjects` (_HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers_). ShellAnything do not register itself to this file system element. This could create confusion on the rendering order of context menus since `Directory` may (or may not) have priority over `AllFilesystemObjects`.
2761
+
2762
+
2763
+
2718
2764
## Missing ampersand character (`&`) in menus ##
2719
2765
2720
2766
One might be puzzled as to why his menus do not display ampersand character (`&`) properly.
0 commit comments