Работа с файлами-образами и виртуальными дисками из ТС
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Работа с файлами-образами и виртуальными дисками из ТС
Imdisk Toolkit нахидится сдесь:
http://reboot.pro/files/file/284-imdisk-toolkit/
Пытаюсь создать две кнопки в командере.
Одна для mount образов и инсталляции драйвера.
Вторая для unmount образов и деинсталляции драйвера.
Инсталляция драйвера происходит через install.cmd
Деинсталляция драйвера происходит через uninstall_imdisk.cmd
Но как сделать что-бы кнопка установила драйвер, а затем монтировала имедж под курсором, я пока не осилил.
Может такая тема уже пробегала?
http://reboot.pro/files/file/284-imdisk-toolkit/
Пытаюсь создать две кнопки в командере.
Одна для mount образов и инсталляции драйвера.
Вторая для unmount образов и деинсталляции драйвера.
Инсталляция драйвера происходит через install.cmd
Деинсталляция драйвера происходит через uninstall_imdisk.cmd
Но как сделать что-бы кнопка установила драйвер, а затем монтировала имедж под курсором, я пока не осилил.
Может такая тема уже пробегала?
Iori
Зачем перед каждым монтированием пытаться установить драйвер? Это нужно делать единожды при запуске ТС. См. обсуждение.
Я, например, монтирую скриптом типа 1, 2 или кнопкой
Сomm: vd_filedisk.exe
Par's: /mount 2 %V /cd /ro X:
Зачем перед каждым монтированием пытаться установить драйвер? Это нужно делать единожды при запуске ТС. См. обсуждение.
Я, например, монтирую скриптом типа 1, 2 или кнопкой
Сomm: vd_filedisk.exe
Par's: /mount 2 %V /cd /ro X:
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Iori
Я извиняюсь, а зачем ImDisk Toolkit (это просто GUI, которому ещё и необходим .NET Framework), если по сути вы пользуетесь голым ImDisk и этого вполне достаточно?
В кнопке с install.cmd можно дописать параметры "%P%N" (без кавычек) - файл под курсором, в install.cmd дописать команду монтирование переданного файла, используя "%1".
Я извиняюсь, а зачем ImDisk Toolkit (это просто GUI, которому ещё и необходим .NET Framework), если по сути вы пользуетесь голым ImDisk и этого вполне достаточно?
В кнопке с install.cmd можно дописать параметры "%P%N" (без кавычек) - файл под курсором, в install.cmd дописать команду монтирование переданного файла, используя "%1".
Flasher
Деинсталлация, что-бы не оставлять следы на чужой системе.
http://www.ghisler.ch/board/viewtopic.php?t=32427
Но, после закрытия ТС, драйвер же не деинсталлируется из системы.
Можно в Сomm строке запустить два приложения?
Comm: file.cmd & imdisk.exe
Par's: -a -f C:\my_disk.ima -m R: -b 32256
Удобно когда работаешь на чужом компютере и надо монтировать диск.Зачем перед каждым монтированием пытаться установить драйвер?
Деинсталлация, что-бы не оставлять следы на чужой системе.
Например через этот плагин:Это нужно делать единожды при запуске ТС
http://www.ghisler.ch/board/viewtopic.php?t=32427
Но, после закрытия ТС, драйвер же не деинсталлируется из системы.
Можно в Сomm строке запустить два приложения?
Comm: file.cmd & imdisk.exe
Par's: -a -f C:\my_disk.ima -m R: -b 32256
Продолжение обсуждения.Iori писал(а):Деинсталлация, что-бы не оставлять следы на чужой системе.
Но, после закрытия ТС, драйвер же не деинсталлируется из системы.
Есть своя тема по ссылке выше.Iori писал(а):Например через этот плагин:
Можно, конечно. Через %Comspec% /c спереди, а объединять через && для ожидания успешного выполнения первой команды.Iori писал(а):Можно в Сomm строке запустить два приложения?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Голый ImDisk пойдёт.
Это я не знал. Но всё ровно через батник удобнее будет. Так как не всегда нужно что-бы драйвер устанавливался.Указанный вами плагин может запустить любую команду и при закрытии TC.
Голый ImDisk пойдёт.
Я в батниках не силён, попробую и отпишусь.в install.cmd дописать команду монтирование переданного файла, используя "%1".
Iori
Может, сперва стоило батник выложить? Полагаю, можно и без него обойтись.
Мне лично это нужно, чтобы работали и утилиты и плагин в любое время.
Может, сперва стоило батник выложить? Полагаю, можно и без него обойтись.
А как в батнике проверяется, установлен ли драйвер? Через verifier?Iori писал(а):Но всё ровно через батник удобнее будет. Так как не всегда нужно что-бы драйвер устанавливался.
Мне лично это нужно, чтобы работали и утилиты и плагин в любое время.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher
Вот сам батник.
[cut]
[/cut]
Posted after 11 minutes:
Ладно передумал, будем делать по другому.
Без Инсталляция и Деинсталляция драйвера, а то я смотировать диск не могу через кнопку.
Posted after 3 minutes:
Но кнопки для mount / unmount по любому нужно делать.
По идеи кнопка будет такая:Можно, конечно. Через %Comspec% /c спереди, а объединять через && для ожидания успешного выполнения первой команды.
Код: Выделить всё
Comm: %Comspec% /c "%commander_path%\utilities\imdisk\install.cmd" && "%commander_path%\utilities\imdisk\imdisk.exe"
Parammeters: -a -f "%P%N" -m R:
[cut]
Код: Выделить всё
@echo off
setlocal
title ImDisk Virtual Disk Driver setup
echo ImDisk Virtual Disk Driver setup
echo.
set IMDISK_TOTAL_DEVICES=0
set IMDISK_VALID_DEVICES=0
set IMDISK_PENDING_REMOVAL_DEVICES=0
if exist "%SystemRoot%\system32\imdisk.exe" (
for /f %%a in ('imdisk -l -n ^| find /v /i ^"No^"') do call :addline "%%a"
)
if %IMDISK_VALID_DEVICES% GTR 0 (
echo Number of existing ImDisk virtual disks: %IMDISK_VALID_DEVICES%
echo.
if "%IMDISK_SILENT_SETUP%" == "1" (
echo Please dismount all existing ImDisk virtual disks before upgrade!
echo.
) else (
msgboxw "Please dismount all existing ImDisk virtual disks before upgrade!" 16 "ImDisk Virtual Disk Driver setup"
start control imdisk.cpl
)
endlocal
goto :eof
)
echo Number of existing ImDisk virtual disks: %IMDISK_TOTAL_DEVICES%
echo.
if %IMDISK_TOTAL_DEVICES% == 0 (
net stop imdsksvc
net stop awealloc
net stop imdisk
if exist "%SystemRoot%\system32\taskkill.exe" taskkill /F /IM imdsksvc.exe
)
pushd "%~dp0"
rundll32 setupapi.dll,InstallHinfSection DefaultInstall 132 .\imdisk.inf
popd
if errorlevel 1 (
if not "%IMDISK_SILENT_SETUP%" == "1" msgboxw "Setup failed. Please try to reboot the computer and then try to run the setup package again." 16 "ImDisk Virtual Disk Driver setup"
endlocal
goto :eof
)
set IMDISK_START_FAILED=1
if %IMDISK_TOTAL_DEVICES% == 0 (
set IMDISK_START_FAILED=0
net start imdsksvc || set IMDISK_START_FAILED=1
net start awealloc || set IMDISK_START_FAILED=1
net start imdisk || set IMDISK_START_FAILED=1
)
if not "%IMDISK_SILENT_SETUP%" == "1" (
if %IMDISK_START_FAILED% == 0 (
msgboxw "Setup finished successfully. Open ImDisk Virtual Disk Driver applet in Control Panel or use imdisk command line to manage your virtual disks!" 0 "ImDisk Virtual Disk Driver setup"
) else (
msgboxw "Setup finished, but drivers or services could not start. Please try to reboot the computer and then try to run the setup package again." 16 "ImDisk Virtual Disk Driver setup"
)
)
endlocal
goto :eof
:addline
imdisk -l -u %~1 > nul 2>&1
if errorlevel 1 (
set /a IMDISK_PENDING_REMOVAL_DEVICES=%IMDISK_PENDING_REMOVAL_DEVICES% + 1 > nul
) else (
set /a IMDISK_VALID_DEVICES=%IMDISK_VALID_DEVICES% + 1 > nul
)
set /a IMDISK_TOTAL_DEVICES=%IMDISK_TOTAL_DEVICES% + 1 > nul
goto :eof
Posted after 11 minutes:
Ладно передумал, будем делать по другому.
Без Инсталляция и Деинсталляция драйвера, а то я смотировать диск не могу через кнопку.
Posted after 3 minutes:
Через команду if exist. Но по мойму легче просто кода надо запустить install.cmd a потом uninstall.cmd.А как в батнике проверяется, установлен ли драйвер? Через verifier?
Но кнопки для mount / unmount по любому нужно делать.
Iori
Для начала в кнопке пишем %V вместо "%P%N". Батник кучу дел делает, а можно было бы с указанной мной утилитой всё упростить в разы.
Всё равно пока не нахожу смысла в uninstall_imdisk.cmd. А вдруг забудешь выполнить? Я за автоматику.

Для начала в кнопке пишем %V вместо "%P%N". Батник кучу дел делает, а можно было бы с указанной мной утилитой всё упростить в разы.
Всё равно пока не нахожу смысла в uninstall_imdisk.cmd. А вдруг забудешь выполнить? Я за автоматику.
Это как?Iori писал(а):Без Инсталляция и Деинсталляция драйвера.
Мдэ. Exe-шник копировать в system32 - это кто придумал?Iori писал(а):Через команду if exist.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher
Спасибо за %V%
Пока кнопки такие:
Например: у меня в системе imdisk установлен. За чем мне его инсталлировать или деинсталлировать каждый раз.
Инсталляцию можно решить проверкой на наличие imdisk.sys в System32\Drivers, a что делать с деинсталляцией?
PS:
Вообще можно 3 кнопки.
1. Кнопка проверяет на наличие imdisk.sysм и затем монтирует имедж.
2. Кнопка демонтирует имедж
3. Кнопка демонтирует имедж и уберает imdisk из системы.
На компютере где imdisk не установлен, конечно кнопки работать не будут, по этому и надо install.cmd и uninstall.cmd
Спасибо за %V%
Пока кнопки такие:
Код: Выделить всё
Mount:
TOTALCMD#BAR#DATA
"%commander_path%\Utilities\ImDisk\imdisk.exe"
-a -f "%V" -m R:
Unmount:
TOTALCMD#BAR#DATA
"%commander_path%\Utilities\ImDisk\imdisk.exe"
-D -m r:
Тогда получается будет 4 кнопки а не две.Это как?
Например: у меня в системе imdisk установлен. За чем мне его инсталлировать или деинсталлировать каждый раз.
Инсталляцию можно решить проверкой на наличие imdisk.sys в System32\Drivers, a что делать с деинсталляцией?
PS:
Вообще можно 3 кнопки.
1. Кнопка проверяет на наличие imdisk.sysм и затем монтирует имедж.
2. Кнопка демонтирует имедж
3. Кнопка демонтирует имедж и уберает imdisk из системы.
На компютере где imdisk не установлен, конечно кнопки работать не будут, по этому и надо install.cmd и uninstall.cmd
Разве я указал кавычки? Они и так появятся при необходимости, а сдвоенность наоборот в этой ситуации всё поломает.Iori писал(а):Спасибо за %V
-a -f "%V" -m R:
А, без портабельности. Ну, хозяин - барин.Iori писал(а):Например: у меня в системе imdisk установлен.
Можно смотреть наличие в списке по driverquery. Или, обратной проверкой if not exist, если всё это не накладно.Iori писал(а):Инсталляцию можно решить проверкой на наличие imdisk.sys в System32\Drivers, a что делать с деинсталляцией?
Я понимаю, но этот вариант, как я уже писал, мне не нравится. Но дело опять же хозяйское.Iori писал(а):по этому и надо install.cmd и uninstall.cmd
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher
Сделал так:
Кнопка:
[cut]
[/cut]
Лучше сделать через comspec /c, потому что в самой кнопке можно будет менять параметры.
PS: imdisk.inf важен потому что он устанавливает imdisk правельной битности.
Сделал так:
Кнопка:
Код: Выделить всё
TOTALCMD#BAR#DATA
"%commander_path%\Utilities\ImDisk\IMDISK_install.cmd"
%V
Код: Выделить всё
if exist %windir%\system32\imdisk.exe goto :skp
pushd "%~dp0"
net stop imdsksvc 2> nul
net stop awealloc 2> nul
net stop imdisk 2> nul
rundll32 setupapi.dll,InstallHinfSection DefaultInstall 132 .\imdisk.inf
if errorlevel 1 (
echo ImDisk Setup failed. Please try to reboot the computer and then try to run the setup package again." 16 "ImDisk Virtual Disk Driver setup"
goto :eof
)
:skp
net start imdsksvc > nul
net start imdisk > nul
echo ImDisk Setup finished successfully.
popd
imdisk.exe -a -f "%1" -m R:
Лучше сделать через comspec /c, потому что в самой кнопке можно будет менять параметры.
PS: imdisk.inf важен потому что он устанавливает imdisk правельной битности.
Iori
В батнике битность можно проверять хотя бы по set PROCESSOR_ARCHITEW6432|If %ERRORLEVEL% == 0 или так, например. В vbs можно ещё точнее. Если поставить autorun, то можно прямо смотреть битность по %AUTORUN_OSARCH%.
Поэтому от inf можно и отказаться в пользу предложенного, не трогая путь.
VBS что ль накидать.
В батнике битность можно проверять хотя бы по set PROCESSOR_ARCHITEW6432|If %ERRORLEVEL% == 0 или так, например. В vbs можно ещё точнее. Если поставить autorun, то можно прямо смотреть битность по %AUTORUN_OSARCH%.
Поэтому от inf можно и отказаться в пользу предложенного, не трогая путь.
VBS что ль накидать.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher
А если система 32бит, то надо вторую кнопку для 32 битной vd_filedisk.sys? А как знать какая система без проверки?
И как теперь ещё монтировать файл без дополнительного скрипта?
Не знаю чем inf не понравился. Но даже если от него отказатся, то можно просто тем же install.cmd воспользоваться.
Вот %comspec% было самое то, но у меня не получилось.
[/quote]
Поэтому от inf можно и отказаться в пользу предложенного, не трогая путь.
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\PLUGINS\Tools\REGDRV\regdrv.exe
/i /c PLUGINS\wfx\VirtualDisk\VD_Driver\amd64\vd_filedisk.sys
%COMMANDER_PATH%\PLUGINS\Tools\REGDRV\regdrv.exe
regdrv
%COMMANDER_PATH%\
-1
И как теперь ещё монтировать файл без дополнительного скрипта?
Поэтому от inf можно и отказаться
Не знаю чем inf не понравился. Но даже если от него отказатся, то можно просто тем же install.cmd воспользоваться.
Вот %comspec% было самое то, но у меня не получилось.
[/quote]