Я пытаюсь создать виртуальную папку на панели навигации в windows проводнике, например OneDrive или Dropbox или Google Диск .
У меня есть один командный файл (то есть сценарий), который создает запись реестра на уровне (HKCU) , который отлично работает, когда я запускаю его вручную в командной строке. Но он не работает, когда я пытаюсь запустить тот же файл .bat внутри .onInstSuccess обратного вызова с помощью электронного строителя с использованием настраиваемого сценария nsis. Это создает только ссылку на виртуальную папку, например xXxxxx (32 бит) в панели навигации, но когда вы нажимаете на нее, ничего не происходит (он должен открывать TargetFolderPath, который упоминается в файле .bat).
Ниже мой .bat файл (add.bat).
@set uuid=f2b4cf36-0e3d-534a-9835-732a0139c194
@echo off
@reg add HKCU\Software\Classes\CLSID\{%uuid%} /ve /t REG_SZ /d "xXxxxx" /f
@reg add HKCU\Software\Classes\CLSID\{%uuid%}\DefaultIcon /ve /t REG_EXPAND_SZ /d "%SystemRoot%\system32\imageres.dll",-1043 /f
@reg add HKCU\Software\Classes\CLSID\{%uuid%} /v System.IsPinnedToNameSpaceTree /t REG_DWORD /d 0x1 /f
@reg add HKCU\Software\Classes\CLSID\{%uuid%} /v SortOrderIndex /t REG_DWORD /d 0x42 /f
@reg add HKCU\Software\Classes\CLSID\{%uuid%}\InProcServer32 /ve /t REG_EXPAND_SZ /d "%SystemRoot%\system32\shell32.dll" /f
@reg add HKCU\Software\Classes\CLSID\{%uuid%}\Instance /v CLSID /t REG_SZ /d {0E5AAE11-A475-4c5b-AB00-C66DE400274E} /f
@reg add HKCU\Software\Classes\CLSID\{%uuid%}\Instance\InitPropertyBag /v Attributes /t REG_DWORD /d 0x11 /f
@reg add HKCU\Software\Classes\CLSID\{%uuid%}\Instance\InitPropertyBag /v TargetFolderPath /t REG_EXPAND_SZ /d "%USERPROFILE%\xXxxxx" /f
@reg add HKCU\Software\Classes\CLSID\{%uuid%}\ShellFolder /v FolderValueFlags /t REG_DWORD /d 0x28 /f
@reg add HKCU\Software\Classes\CLSID\{%uuid%}\ShellFolder /v Attributes /t REG_DWORD /d 0xF080004D /f
@reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{%uuid%} /ve /t REG_SZ /d xXxxxx /f
@reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel /v {%uuid%} /t REG_DWORD /d 0x1 /f
Ниже мой installer.n sh код
Function .onInstSuccess
; SetOutPath "$INSTDIR\resources\build\bin\"
ExpandEnvStrings $0 %COMSPEC%
; ExecWait '"$INSTDIR\resources\build\bin\add.bat"'
nsExec::Exec '"$0" /C if 1==1 "$INSTDIR\resources\build\bin\add.bat"'
FunctionEnd
Я также прикрепил два изображения ссылки на виртуальную папку working.png и non-working.png в панели навигации для большей ясности.
Примечание: я думаю, что есть проблема с nsExe c :: Exe c, открытым cmd.exe из. n sh файл не ведет себя так же, как вручную я запускал .bat файл в cmd.exe.
Спасибо и С уважением, Рачит В. Сахидас