El Sanchez |
14-09-2010 11:06 1494992 |
Corsag21, понятно.
Так как я не знаю вашей ОС, то предложу 2 варианта - для WinXP и Win7(/Vista?)
Для XP:
Код:
@Echo Off
Set DataDir=C:\Program Files\Oblivion\Data
Set SourcePlugin=C:\Installs\Games\Oblivion\OblivionPatches
:: ================================
Set DataDir=%DataDir:(=^^^^(%
Set DataDir=%DataDir:)=^^)%
SetLocal EnableDelayedExpansion
For /D %%A In ("%SourcePlugin%\*") Do (
Echo @Echo Off>"%%A\Install %%~nA.bat"
Echo Reg Query "HKCR\Directory\shell\DeletePlugin_%%~nA" /v Extended 1^>nul 2^>^&1^&^&GoTo :UnInstall^|^|GoTo :Install>>"%%A\Install %%~nA.bat"
Echo.>>"%%A\Install %%~nA.bat"
Echo :Install>>"%%A\Install %%~nA.bat"
Echo Reg Add "HKCR\Directory\shell\DeletePlugin_%%~nA" /v MUIVerb /d "Удалить плагин %%~nA" /f 1^>nul 2^>nul>>"%%A\Install %%~nA.bat"
Echo Reg Add "HKCR\Directory\shell\DeletePlugin_%%~nA" /v Extended /f 1^>nul 2^>nul>>"%%A\Install %%~nA.bat"
Echo Reg Add "HKCR\Directory\shell\DeletePlugin_%%~nA\command" /ve /d "\"%DataDir%\Uninstall %%~nA.bat\"" 1^>nul 2^>nul>>"%%A\Install %%~nA.bat"
Echo Ren %%0 "Uninstall %%~nA%%~x0">>"%%A\Install %%~nA.bat"
Echo GoTo :EOF>>"%%A\Install %%~nA.bat"
Echo.>>"%%A\Install %%~nA.bat"
Echo :UnInstall>>"%%A\Install %%~nA.bat"
For /F "Tokens=*" %%B In ('Dir /B /S /A-D "%%A" 2^>nul') Do (
Set SourceFilePath=%%B
Call Set DestFilePath=%%SourceFilePath:%%A=%DataDir%%%
If /I Not "%%~nB"=="Install %%~nA" Echo Del /F /Q "!DestFilePath!" ^>nul>>"%%A\Install %%~nA.bat"
)
Echo Reg Delete "HKCR\Directory\shell\DeletePlugin_%%~nA" /f 1^>nul 2^>nul>>"%%A\Install %%~nA.bat"
Echo Del /F /Q %%0 ^>nul>>"%%A\Install %%~nA.bat"
)
Для Win7:
Код:
@Echo Off
Set DataDir=C:\Program Files\Oblivion\Data
Set SourcePlugin=C:\Installs\Games\Oblivion\OblivionPatches
:: ================================
Set DataDir=%DataDir:(=^^^^(%
Set DataDir=%DataDir:)=^^)%
SetLocal EnableDelayedExpansion
For /D %%A In ("%SourcePlugin%\*") Do (
Echo @Echo Off>"%%A\Install %%~nA.bat"
Echo Reg Query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\CommandStore\shell\%%~nA" /v Icon 1^>nul 2^>^&1^&^&GoTo :UnInstall^|^|GoTo :Install>>"%%A\Install %%~nA.bat"
Echo.>>"%%A\Install %%~nA.bat"
Echo :Install>>"%%A\Install %%~nA.bat"
Echo Reg Add "HKCR\Directory\shell\DeletePlugins" /v MUIVerb /d "Удалить плагины Oblivion" /f ^>nul>>"%%A\Install %%~nA.bat"
Echo Reg Add "HKCR\Directory\shell\DeletePlugins" /v Extended /f ^>nul>>"%%A\Install %%~nA.bat"
Echo Reg Query "HKCR\Directory\shell\DeletePlugins" /v SubCommands 1^>nul 2^>^&1^&^&^(^^>>"%%A\Install %%~nA.bat"
Echo For /F "Tokens=2*" %%%%I In ^('Reg Query "HKCR\Directory\shell\DeletePlugins" /v SubCommands^^^|Find "REG_SZ" 2^^^>nul'^) Do ^^>>"%%A\Install %%~nA.bat"
Echo Reg Add "HKCR\Directory\shell\DeletePlugins" /v SubCommands /d "%%%%J;%%~nA" /f 1^>nul 2^>nul^)^|^|^(^^>>"%%A\Install %%~nA.bat"
Echo Reg Add "HKCR\Directory\shell\DeletePlugins" /v SubCommands /d "PDFViewer" /f 1^>nul 2^>nul^)>>"%%A\Install %%~nA.bat"
Echo Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\CommandStore\shell\%%~nA" /ve /d "Удалить %%~nA" /f ^>nul>>"%%A\Install %%~nA.bat"
Echo Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\CommandStore\shell\%%~nA" /v Icon /d "shell32.dll,-240" /f ^>nul>>"%%A\Install %%~nA.bat"
Echo Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\CommandStore\shell\%%~nA\command" /ve /d "\"%DataDir%\Uninstall %%~nA.bat\"" /f ^>nul>>"%%A\Install %%~nA.bat"
Echo Ren %%0 "Uninstall %%~nA%%~x0">>"%%A\Install %%~nA.bat"
Echo GoTo :EOF>>"%%A\Install %%~nA.bat"
Echo.>>"%%A\Install %%~nA.bat"
Echo :UnInstall>>"%%A\Install %%~nA.bat"
For /F "Tokens=*" %%B In ('Dir /B /S /A-D "%%A" 2^>nul') Do (
Set SourceFilePath=%%B
Call Set DestFilePath=%%SourceFilePath:%%A=%DataDir%%%
If /I Not "%%~nB"=="Install %%~nA" Echo Del /F /Q "!DestFilePath!" ^>nul>>"%%A\Install %%~nA.bat"
)
Echo Reg Delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\CommandStore\shell\%%~nA" /f 1^>nul 2^>nul>>"%%A\Install %%~nA.bat"
Echo For /F "Tokens=2*" %%%%I In ^('Reg Query "HKCR\Directory\shell\DeletePlugins" /v SubCommands^^^|Find "REG_SZ" 2^^^>nul'^) Do Set SubCommand=%%%%J>>"%%A\Install %%~nA.bat"
Echo Set SubCommand=%%SubCommand:%%~nA=;%%>>"%%A\Install %%~nA.bat"
Echo Set SubCommand=%%SubCommand:;;;=;%%>>"%%A\Install %%~nA.bat"
Echo Set SubCommand=%%SubCommand:;;=;%%>>"%%A\Install %%~nA.bat"
Echo If "%%SubCommand%%"==";" ^(Reg Delete "HKCR\Directory\shell\DeletePlugins" /f 1^>nul 2^>nul^&Del /F /Q %%0 ^>nul^)>>"%%A\Install %%~nA.bat"
Echo If Not "%%SubCommand%%"==";" ^(>>"%%A\Install %%~nA.bat"
Echo SetLocal EnableDelayedExpansion>>"%%A\Install %%~nA.bat"
Echo If "^!SubCommand:~0,1^!"==";" Set SubCommand=^^!SubCommand:~1^^!>>"%%A\Install %%~nA.bat"
Echo If "^!SubCommand:~-1^!"==";" Set SubCommand=^^!SubCommand:~0,-1^^!>>"%%A\Install %%~nA.bat"
Echo Reg Add "HKCR\Directory\shell\DeletePlugins" /v SubCommands /d "^!SubCommand^!" /f 1^>nul 2^>nul>>"%%A\Install %%~nA.bat"
Echo Del /F /Q %%0 ^>nul^)>>"%%A\Install %%~nA.bat"
)
Вам нужно будет только изменить пути (выделено красным) к папкам Data (для примера C:\Program Files\Oblivion\Data) и папке с плагинами, предназначенными для установки (для примера C:\Installs\Games\Oblivion\OblivionPatches). Чтобы все работало придерживайтесь следующего: - В папке OblivionPatches должны быть подпапки с уникальными именами с файлами плагинов (например, файлы плагина BlaBlaBla (папки meshes, textures и т.д.) должны быть в папке OblivionPatches в подпапке BlaBlaBla). Уникальное имя подпапки будет фигурировать в контекстном меню, поэтому выбирайте понятные названия.
- При запуске одного из этих 2 скриптов в папках плагинов создадутся батники вида Install "имя плагина".bat. Когда захотите установить плагин в игру просто скопируйте все из, например, BlaBlaBla (папки meshes, textures, батник и т.д.) в папку Data игры.
- В итоге, если скопировали несколько плагинов, то в папке Data будет несколько батников Install "имя плагина".bat. Запустите те, которые хотите "установить" и прописать в контекстном меню. При этом батник поменяет свое имя на Uninstall "имя плагина".bat. Это значит, что батник готов к удалению файлов плагина и запись в контекстном меню присутствует. Захотите удалить плагин либо запускайте батник, либо через контекстное меню.
- Дабы не захламлять контекстное меню записями, вызывайте его при нажатой клавише Shift.
- Только для Win7 сделано каскадное меню, для XP каскадное меню без shell extension сделать нельзя, поэтому записи в основном меню.
З.Ы. Надеюсь, понятно объяснил. :)
З.Ы.Ы. Легче полноценный инсталлятор написать, чем инсталлятор на батниках :)
|