Skip to content

Commit b2e883f

Browse files
authored
Fix issue WinMerge#2638: Context menu not working if installed from non-elevated (non admin) user on win 10 x64 (WinMerge#2639)
1 parent 2330e56 commit b2e883f

File tree

5 files changed

+158
-68
lines changed

5 files changed

+158
-68
lines changed

Installer/InnoSetup/WinMergeARM64.is6.iss

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -665,10 +665,10 @@ Name: {autodesktop}\WinMerge; Filename: {app}\WinMergeU.exe; Tasks: desktopicon
665665
Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\WinMerge; Filename: {app}\WinMergeU.exe; Tasks: quicklaunchicon
666666

667667
[Registry]
668-
Root: HKCU; Subkey: Software\Thingamahoochie; Flags: uninsdeletekeyifempty
669-
Root: HKCU; Subkey: Software\Thingamahoochie\WinMerge; Flags: uninsdeletekey
670-
Root: HKA; Subkey: Software\Thingamahoochie; Flags: uninsdeletekeyifempty
671-
Root: HKA; Subkey: Software\Thingamahoochie\WinMerge; Flags: uninsdeletekey
668+
Root: HKU; Subkey: {code:GetOriginalUserSID}\Software\Thingamahoochie; Flags: uninsdeletekeyifempty
669+
Root: HKU; Subkey: {code:GetOriginalUserSID}\Software\Thingamahoochie\WinMerge; Flags: uninsdeletekey
670+
Root: HKA; Subkey: Software\Thingamahoochie; Flags: uninsdeletekeyifempty
671+
Root: HKA; Subkey: Software\Thingamahoochie\WinMerge; Flags: uninsdeletekey
672672

673673
;Add Project file extension (.WinMerge) to known extensions and
674674
;set WinMerge to open those files
@@ -701,36 +701,36 @@ Root: HKA; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinMerge
701701

702702
;Registry Keys for use by ShellExtension.dll
703703
Root: HKA; SubKey: Software\Thingamahoochie\WinMerge; ValueType: string; ValueName: Executable; ValueData: {app}\WinMergeU.exe
704-
Root: HKCU; SubKey: Software\Thingamahoochie\WinMerge; ValueType: string; ValueName: Executable; ValueData: {app}\WinMergeU.exe
704+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\Thingamahoochie\WinMerge; ValueType: string; ValueName: Executable; ValueData: {app}\WinMergeU.exe
705705

706706
;Enables or disables the Context Menu preference based on what the user selects during install
707707
;Initially the Context menu is explicitly disabled:
708708
Root: HKA; SubKey: Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: 0;
709709

710710
;If the user chose to use the context menu then we re-enable it. This is necessary so it'll turn on and off not just on.
711711
Root: HKA; SubKey: Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: 1; Tasks: ShellExtension
712-
Root: HKCU; SubKey: Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: {code:ShellMenuEnabled}
712+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: {code:ShellMenuEnabled}
713713

714714
;If WinMerge.exe is installed then we'll automatically configure WinMerge as the differencing application
715-
Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: string; ValueName: External Diff Application; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue; Tasks: TortoiseCVS
716-
Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: dword; ValueName: DiffAsUnicode; ValueData: $00000001; Flags: uninsdeletevalue; Tasks: TortoiseCVS
717-
Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Diff Application; ValueType: string; ValueName: _; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
718-
Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Diff2 Params; ValueType: string; ValueName: _; ValueData: """%1"" ""%2"""; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
715+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS; ValueType: string; ValueName: External Diff Application; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue; Tasks: TortoiseCVS
716+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS; ValueType: dword; ValueName: DiffAsUnicode; ValueData: $00000001; Flags: uninsdeletevalue; Tasks: TortoiseCVS
717+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS\Prefs\External Diff Application; ValueType: string; ValueName: _; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
718+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS\Prefs\External Diff2 Params; ValueType: string; ValueName: _; ValueData: """%1"" ""%2"""; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
719719

720720
;Tells TortoiseCVS to use WinMerge as its differencing application (this happens whether or not Tortoise is current installed, that way
721721
;if it is installed at a later date this will automatically support it)
722-
Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: string; ValueName: External Merge Application; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue; Tasks: TortoiseCVS
723-
Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: dword; ValueName: MergeAsUnicode; ValueData: $00000001; Flags: uninsdeletevalue; Tasks: TortoiseCVS
724-
Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Merge Application; ValueType: string; ValueName: _; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
725-
Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Merge2 Params; ValueType: string; ValueName: _; ValueData: """%mine"" ""%yours"""; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
722+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS; ValueType: string; ValueName: External Merge Application; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue; Tasks: TortoiseCVS
723+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS; ValueType: dword; ValueName: MergeAsUnicode; ValueData: $00000001; Flags: uninsdeletevalue; Tasks: TortoiseCVS
724+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS\Prefs\External Merge Application; ValueType: string; ValueName: _; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
725+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS\Prefs\External Merge2 Params; ValueType: string; ValueName: _; ValueData: """%mine"" ""%yours"""; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
726726

727727
;Set WinMerge as TortoiseGit diff tool
728-
Root: HKCU; SubKey: Software\TortoiseGit; ValueType: string; ValueName: Diff; ValueData: {app}\WinMergeU.exe -e -ub -dl %bname -dr %yname %base %mine; Flags: uninsdeletevalue; Tasks: TortoiseGit
729-
Root: HKCU; SubKey: Software\TortoiseGit; ValueType: string; ValueName: Merge; ValueData: {code:TortoiseSVNGitMergeToolCommandLine}; Flags: uninsdeletevalue; Check: UseAs3WayMergeTool; Tasks: TortoiseGit
728+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseGit; ValueType: string; ValueName: Diff; ValueData: {app}\WinMergeU.exe -e -ub -dl %bname -dr %yname %base %mine; Flags: uninsdeletevalue; Tasks: TortoiseGit
729+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseGit; ValueType: string; ValueName: Merge; ValueData: {code:TortoiseSVNGitMergeToolCommandLine}; Flags: uninsdeletevalue; Check: UseAs3WayMergeTool; Tasks: TortoiseGit
730730

731731
;Set WinMerge as TortoiseSVN diff tool
732-
Root: HKCU; SubKey: Software\TortoiseSVN; ValueType: string; ValueName: Diff; ValueData: {app}\WinMergeU.exe -e -ub -dl %bname -dr %yname %base %mine; Flags: uninsdeletevalue; Tasks: TortoiseSVN
733-
Root: HKCU; SubKey: Software\TortoiseSVN; ValueType: string; ValueName: Merge; ValueData: {code:TortoiseSVNGitMergeToolCommandLine}; Flags: uninsdeletevalue; Check: UseAs3WayMergeTool; Tasks: TortoiseSVN
732+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseSVN; ValueType: string; ValueName: Diff; ValueData: {app}\WinMergeU.exe -e -ub -dl %bname -dr %yname %base %mine; Flags: uninsdeletevalue; Tasks: TortoiseSVN
733+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseSVN; ValueType: string; ValueName: Merge; ValueData: {code:TortoiseSVNGitMergeToolCommandLine}; Flags: uninsdeletevalue; Check: UseAs3WayMergeTool; Tasks: TortoiseSVN
734734

735735
;Whatever the user chooses at the [Select Setup Language] dialog should also determine what language WinMerge will start up in
736736
;(unless the user already has a startup language specified)
@@ -813,6 +813,8 @@ Var
813813
g_CheckListBox: TNewCheckListBox;
814814
g_IsExplorerRestartRequired: boolean;
815815
816+
#include "originaluser.iss"
817+
816818
{Determines whether or not the user chose to create a start menu}
817819
Function GroupCreated(): boolean;
818820
Var

Installer/InnoSetup/WinMergeX64.is6.iss

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -664,10 +664,10 @@ Name: {autodesktop}\WinMerge; Filename: {app}\WinMergeU.exe; Tasks: desktopicon
664664
Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\WinMerge; Filename: {app}\WinMergeU.exe; Tasks: quicklaunchicon
665665

666666
[Registry]
667-
Root: HKCU; Subkey: Software\Thingamahoochie; Flags: uninsdeletekeyifempty
668-
Root: HKCU; Subkey: Software\Thingamahoochie\WinMerge; Flags: uninsdeletekey
669-
Root: HKA; Subkey: Software\Thingamahoochie; Flags: uninsdeletekeyifempty
670-
Root: HKA; Subkey: Software\Thingamahoochie\WinMerge; Flags: uninsdeletekey
667+
Root: HKU; Subkey: {code:GetOriginalUserSID}\Software\Thingamahoochie; Flags: uninsdeletekeyifempty
668+
Root: HKU; Subkey: {code:GetOriginalUserSID}\Software\Thingamahoochie\WinMerge; Flags: uninsdeletekey
669+
Root: HKA; Subkey: Software\Thingamahoochie; Flags: uninsdeletekeyifempty
670+
Root: HKA; Subkey: Software\Thingamahoochie\WinMerge; Flags: uninsdeletekey
671671

672672
;Add Project file extension (.WinMerge) to known extensions and
673673
;set WinMerge to open those files
@@ -700,36 +700,36 @@ Root: HKA; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinMerge
700700

701701
;Registry Keys for use by ShellExtension.dll
702702
Root: HKA; SubKey: Software\Thingamahoochie\WinMerge; ValueType: string; ValueName: Executable; ValueData: {app}\WinMergeU.exe
703-
Root: HKCU; SubKey: Software\Thingamahoochie\WinMerge; ValueType: string; ValueName: Executable; ValueData: {app}\WinMergeU.exe
703+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\Thingamahoochie\WinMerge; ValueType: string; ValueName: Executable; ValueData: {app}\WinMergeU.exe
704704

705705
;Enables or disables the Context Menu preference based on what the user selects during install
706706
;Initially the Context menu is explicitly disabled:
707707
Root: HKA; SubKey: Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: 0;
708708

709709
;If the user chose to use the context menu then we re-enable it. This is necessary so it'll turn on and off not just on.
710710
Root: HKA; SubKey: Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: 1; Tasks: ShellExtension
711-
Root: HKCU; SubKey: Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: {code:ShellMenuEnabled}
711+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\Thingamahoochie\WinMerge; ValueType: dword; ValueName: ContextMenuEnabled; ValueData: {code:ShellMenuEnabled}
712712

713713
;If WinMerge.exe is installed then we'll automatically configure WinMerge as the differencing application
714-
Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: string; ValueName: External Diff Application; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue; Tasks: TortoiseCVS
715-
Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: dword; ValueName: DiffAsUnicode; ValueData: $00000001; Flags: uninsdeletevalue; Tasks: TortoiseCVS
716-
Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Diff Application; ValueType: string; ValueName: _; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
717-
Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Diff2 Params; ValueType: string; ValueName: _; ValueData: """%1"" ""%2"""; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
714+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS; ValueType: string; ValueName: External Diff Application; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue; Tasks: TortoiseCVS
715+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS; ValueType: dword; ValueName: DiffAsUnicode; ValueData: $00000001; Flags: uninsdeletevalue; Tasks: TortoiseCVS
716+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS\Prefs\External Diff Application; ValueType: string; ValueName: _; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
717+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS\Prefs\External Diff2 Params; ValueType: string; ValueName: _; ValueData: """%1"" ""%2"""; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
718718

719719
;Tells TortoiseCVS to use WinMerge as its differencing application (this happens whether or not Tortoise is current installed, that way
720720
;if it is installed at a later date this will automatically support it)
721-
Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: string; ValueName: External Merge Application; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue; Tasks: TortoiseCVS
722-
Root: HKCU; SubKey: Software\TortoiseCVS; ValueType: dword; ValueName: MergeAsUnicode; ValueData: $00000001; Flags: uninsdeletevalue; Tasks: TortoiseCVS
723-
Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Merge Application; ValueType: string; ValueName: _; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
724-
Root: HKCU; SubKey: Software\TortoiseCVS\Prefs\External Merge2 Params; ValueType: string; ValueName: _; ValueData: """%mine"" ""%yours"""; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
721+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS; ValueType: string; ValueName: External Merge Application; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue; Tasks: TortoiseCVS
722+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS; ValueType: dword; ValueName: MergeAsUnicode; ValueData: $00000001; Flags: uninsdeletevalue; Tasks: TortoiseCVS
723+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS\Prefs\External Merge Application; ValueType: string; ValueName: _; ValueData: {app}\WinMergeU.exe; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
724+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseCVS\Prefs\External Merge2 Params; ValueType: string; ValueName: _; ValueData: """%mine"" ""%yours"""; Flags: uninsdeletevalue dontcreatekey; Tasks: TortoiseCVS
725725

726726
;Set WinMerge as TortoiseGit diff tool
727-
Root: HKCU; SubKey: Software\TortoiseGit; ValueType: string; ValueName: Diff; ValueData: {app}\WinMergeU.exe -e -ub -dl %bname -dr %yname %base %mine; Flags: uninsdeletevalue; Tasks: TortoiseGit
728-
Root: HKCU; SubKey: Software\TortoiseGit; ValueType: string; ValueName: Merge; ValueData: {code:TortoiseSVNGitMergeToolCommandLine}; Flags: uninsdeletevalue; Check: UseAs3WayMergeTool; Tasks: TortoiseGit
727+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseGit; ValueType: string; ValueName: Diff; ValueData: {app}\WinMergeU.exe -e -ub -dl %bname -dr %yname %base %mine; Flags: uninsdeletevalue; Tasks: TortoiseGit
728+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseGit; ValueType: string; ValueName: Merge; ValueData: {code:TortoiseSVNGitMergeToolCommandLine}; Flags: uninsdeletevalue; Check: UseAs3WayMergeTool; Tasks: TortoiseGit
729729

730730
;Set WinMerge as TortoiseSVN diff tool
731-
Root: HKCU; SubKey: Software\TortoiseSVN; ValueType: string; ValueName: Diff; ValueData: {app}\WinMergeU.exe -e -ub -dl %bname -dr %yname %base %mine; Flags: uninsdeletevalue; Tasks: TortoiseSVN
732-
Root: HKCU; SubKey: Software\TortoiseSVN; ValueType: string; ValueName: Merge; ValueData: {code:TortoiseSVNGitMergeToolCommandLine}; Flags: uninsdeletevalue; Check: UseAs3WayMergeTool; Tasks: TortoiseSVN
731+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseSVN; ValueType: string; ValueName: Diff; ValueData: {app}\WinMergeU.exe -e -ub -dl %bname -dr %yname %base %mine; Flags: uninsdeletevalue; Tasks: TortoiseSVN
732+
Root: HKU; SubKey: {code:GetOriginalUserSID}\Software\TortoiseSVN; ValueType: string; ValueName: Merge; ValueData: {code:TortoiseSVNGitMergeToolCommandLine}; Flags: uninsdeletevalue; Check: UseAs3WayMergeTool; Tasks: TortoiseSVN
733733

734734
;Whatever the user chooses at the [Select Setup Language] dialog should also determine what language WinMerge will start up in
735735
;(unless the user already has a startup language specified)
@@ -812,6 +812,8 @@ Var
812812
g_CheckListBox: TNewCheckListBox;
813813
g_IsExplorerRestartRequired: boolean;
814814
815+
#include "originaluser.iss"
816+
815817
{Determines whether or not the user chose to create a start menu}
816818
Function GroupCreated(): boolean;
817819
Var

0 commit comments

Comments
 (0)