Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1274
Благодарности: 1030

Профиль | Отправить PM | Цитировать


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). Чтобы все работало придерживайтесь следующего:
  1. В папке OblivionPatches должны быть подпапки с уникальными именами с файлами плагинов (например, файлы плагина BlaBlaBla (папки meshes, textures и т.д.) должны быть в папке OblivionPatches в подпапке BlaBlaBla). Уникальное имя подпапки будет фигурировать в контекстном меню, поэтому выбирайте понятные названия.
  2. При запуске одного из этих 2 скриптов в папках плагинов создадутся батники вида Install "имя плагина".bat. Когда захотите установить плагин в игру просто скопируйте все из, например, BlaBlaBla (папки meshes, textures, батник и т.д.) в папку Data игры.
  3. В итоге, если скопировали несколько плагинов, то в папке Data будет несколько батников Install "имя плагина".bat. Запустите те, которые хотите "установить" и прописать в контекстном меню. При этом батник поменяет свое имя на Uninstall "имя плагина".bat. Это значит, что батник готов к удалению файлов плагина и запись в контекстном меню присутствует. Захотите удалить плагин либо запускайте батник, либо через контекстное меню.
  4. Дабы не захламлять контекстное меню записями, вызывайте его при нажатой клавише Shift.
  5. Только для Win7 сделано каскадное меню, для XP каскадное меню без shell extension сделать нельзя, поэтому записи в основном меню.

З.Ы. Надеюсь, понятно объяснил.
З.Ы.Ы. Легче полноценный инсталлятор написать, чем инсталлятор на батниках
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:06, 14-09-2010 | #4