Страница 2 из 19

Добавлено: Вт фев 09, 2016 08:12
Flasher
Iori писал(а):А если система 32бит, то надо вторую кнопку для 32 битной vd_filedisk.sys?
Зачем? Я же показал как.
Iori писал(а):А как знать какая система без проверки?
Без кнопочной проверки только через подстановку переменной среды, созданную в autorun.cfg из %AUTORUN_OSARCH%. Только 64 придётся вписать для соотв. файлов или положить их в папку "64".
Iori писал(а):И как теперь ещё монтировать файл без дополнительного скрипта?
В смысле "дополнительного"? Скрипт можно сделать и общий для всех действий. Только сперва нужно определиться с параметрами. Если речь исключительно об упрощённых кнопочных вариантах, то писать что-то типа cmd /c if ... (start "" command1) else (start "" command2).
Iori писал(а):Не знаю чем inf не понравился.
Для начала неплохо было бы в него заглянуть и оценить, что он делает лишнего.

Добавлено: Вт фев 09, 2016 21:47
Iori
Flasher
Для начала неплохо было бы в него заглянуть и оценить, что он делает лишнего.
Ну так этот же inf file находится в файле по ссылке на первой странице.

Могу выложить.

[cut]

Код: Выделить всё

[Version]
signature = "$Windows NT$"
Provider = "LTR Data"
DriverVer=12/15/2015,6.0.6001.18000


[SourceDisksNames]
1 = "ImDisk Virtual Disk Driver Installation disk"


[SourceDisksFiles.x86]
awealloc.sys = 1,awealloc\i386
imdisk.sys = 1,sys\i386
imdsksvc.exe = 1,svc\i386
imdisk.cpl = 1,cpl\i386
imdisk.exe = 1,cli\i386
imdisk.inf = 1
uninstall_imdisk.cmd = 1


[SourceDisksFiles.ia64]
awealloc.sys = 1,awealloc\ia64
imdisk.sys = 1,sys\ia64
imdsksvc.exe = 1,svc\ia64
imdisk.cpl = 1,cpl\ia64
imdisk.exe = 1,cli\ia64
imdisk.inf = 1
uninstall_imdisk.cmd = 1


[SourceDisksFiles.amd64]
awealloc.sys = 1,awealloc\amd64
imdisk.sys = 1,sys\amd64
imdsksvc.exe = 1,svc\amd64
imdisk.cpl = 1,cpl\amd64
imdisk.exe = 1,cli\amd64
imdisk.inf = 1
uninstall_imdisk.cmd = 1


[DestinationDirs]
ImDiskExeFiles = 11
ImDiskExe32Files = 16425
ImDiskSysFiles = 12
ImDiskInfFiles = 17
 

[DefaultInstall.ntx86]
CopyFiles = ImDiskSysFiles, ImDiskExeFiles, ImDiskInfFiles
AddReg = ImDiskAddReg
DelReg = ImDiskDelOldReg


[DefaultUninstall.ntx86]
DelFiles = ImDiskSysFiles, ImDiskExeFiles, ImDiskInfFiles
DelReg = ImDiskDelReg


[DefaultInstall.ntamd64]
CopyFiles = ImDiskSysFiles, ImDiskExeFiles, ImDiskExe32Files, ImDiskInfFiles
AddReg = ImDiskAddReg
DelReg = ImDiskDelOldReg


[DefaultUninstall.ntamd64]
DelFiles = ImDiskSysFiles, ImDiskExeFiles, ImDiskExe32Files, ImDiskInfFiles
DelReg = ImDiskDelReg


[DefaultInstall.ntia64]
CopyFiles = ImDiskSysFiles, ImDiskExeFiles, ImDiskExe32Files, ImDiskInfFiles
AddReg = ImDiskAddReg
DelReg = ImDiskDelOldReg


[DefaultUninstall.ntia64]
DelFiles = ImDiskSysFiles, ImDiskExeFiles, ImDiskExe32Files, ImDiskInfFiles
DelReg = ImDiskDelReg


[DefaultInstall.ntx86.Services]
AddService = AWEAlloc, , AWEAllocDrv
AddService = ImDisk, , ImDskDrv
AddService = ImDskSvc, , ImDskSvc


[DefaultUninstall.ntx86.Services]
DelService = AWEAlloc
DelService = ImDisk
DelService = ImDskSvc


[DefaultInstall.ntamd64.Services]
AddService = AWEAlloc, , AWEAllocDrv
AddService = ImDisk, , ImDskDrv
AddService = ImDskSvc, , ImDskSvc


[DefaultUninstall.ntamd64.Services]
DelService = AWEAlloc
DelService = ImDisk
DelService = ImDskSvc


[DefaultInstall.ntia64.Services]
AddService = AWEAlloc, , AWEAllocDrv
AddService = ImDisk, , ImDskDrv
AddService = ImDskSvc, , ImDskSvc


[DefaultUninstall.ntia64.Services]
DelService = AWEAlloc
DelService = ImDisk
DelService = ImDskSvc


[ImDiskExeFiles]
imdisk.exe
imdisk.cpl
imdsksvc.exe
uninstall_imdisk.cmd


[ImDiskExe32Files]
imdisk.exe,cli\i386\imdisk.exe
imdisk.cpl,cpl\i386\imdisk.cpl


[ImDiskSysFiles]
awealloc.sys
imdisk.sys


[ImDiskInfFiles]
imdisk.inf


[ImDiskAddReg]
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "DisplayName", 0, "ImDisk Virtual Disk Driver"
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "Publisher", 0, "LTR Data"
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "HelpLink", 0, "http://ltr-data.se/opencode.html"
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "DisplayVersion", 0, "*"
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "UninstallString", 0, "uninstall_imdisk.cmd"
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "DisplayIcon", 0, "%11%\imdisk.cpl"
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "EstimatedSize", 65537, 320
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "NoRepair", 65537, 1
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "NoModify", 65537, 1
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk", "Size", 0, ""

HKCR, "*\shell\ImDiskMountFile", , 0, "Mount as ImDisk Virtual Disk"
HKCR, "*\shell\ImDiskMountFile\command", , 0, "rundll32.exe imdisk.cpl,RunDLL_MountFile %%L"

HKCR, "Drive\shell\ImDiskUnmount", , 0, "Unmount ImDisk Virtual Disk"
HKCR, "Drive\shell\ImDiskUnmount\command", , 0, "rundll32.exe imdisk.cpl,RunDLL_RemoveDevice %%L"

HKCR, "Drive\shell\ImDiskSaveImage", , 0, "Save disk contents as image file"
HKCR, "Drive\shell\ImDiskSaveImage\command", , 0, "rundll32.exe imdisk.cpl,RunDLL_SaveImageFile %%L"


[ImDiskDelOldReg]
HKCR, "*\shell\ImDiskMountFileWriteable"


[ImDiskDelReg]
HKLM, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ImDisk"

HKCR, "*\shell\ImDiskMountFile"

HKCR, "*\shell\ImDiskMountFileWriteable"

HKCR, "Drive\shell\ImDiskUnmount"

HKCR, "Drive\shell\ImDiskSaveImage"


[ImDskDrv]
DisplayName = "ImDisk Virtual Disk Driver"
Description = "Disk emulation driver"
ServiceType = 1
StartType = 2
ErrorControl = 0
ServiceBinary = %12%\imdisk.sys


[AWEAllocDrv]
DisplayName = "AWE Memory Allocation Driver"
Description = "Driver for physical memory allocation through AWE"
ServiceType = 1
StartType = 2
ErrorControl = 0
ServiceBinary = %12%\awealloc.sys


[ImDskSvc]
DisplayName = "ImDisk Virtual Disk Driver Helper"
Description = "Helper service for ImDisk Virtual Disk Driver."
ServiceType = 16
StartType = 2
ErrorControl = 0
ServiceBinary = %11%\imdsksvc.exe
[/cut]

Без кнопочной проверки только через подстановку переменной среды, созданную в autorun.cfg из %AUTORUN_OSARCH%. Только 64 придётся вписать для соотв. файлов или положить их в папку "64".
Тогда я вроде понял.

Очень навароченно выходит.
То есть надо иметь TCUP, менять среду через %AUTORUN_OSARCH%, иметь regdrv.exe и ещё скрипты для монторования и демонтирования.

С вашем решением через regdrv.exe, драйвер будет деинсталлироваться после выхода ис ТС?

Добавлено: Вт фев 09, 2016 22:22
Avada
Iori писал(а):То есть надо иметь TCUP
А TCUP тут вообще при чём? Никакого отношения к обсуждаемой проблеме эта сборка не имеет.
Что касается функций плагина Autorun, то всё выходит нормально, если один раз как следует разобраться. Я сам этой методикой пользуюсь для многих программ, где требуется переменная битность.

Добавлено: Ср фев 10, 2016 13:20
Flasher
Iori писал(а):Ну так этот же inf file находится в файле по ссылке на первой странице.
Могу выложить.
Я не себя имел в виду. Я как раз намекаю на самостоятельный анализ для понимания, чем мне изначально не понравился inf. ImDisk я знаю давно и подключал его раньше. Я просто не вижу в нём смысла, когда есть указанная VD_FileDisk, где всего один exe-шник и драйвер под каждую из битностей, в то время как в ImDisk 1x3 утилиты, 2x3 драйвера и 1x3 сервиса. Т.е. 4 требуемых для работы файла (154,8 Кб) против 12-ти (491,9 Кб), не говоря уже повторно о том, что драйвер от первой даёт возможность пользоваться параллельно и плагином.
Iori писал(а):Тогда я вроде понял.
Пока не особо.
Iori писал(а):То есть надо иметь TCUP, менять среду через %AUTORUN_OSARCH%, иметь regdrv.exe и ещё скрипты для монторования и демонтирования.
По первому уже пояснили (неясно, как такое вообще могло прийти в голову), кроме подстановочной роли в пути (для любой группы программ) переменная никакой иной играть не будет (в случае скрипта она нам вообще не понадобится). А меняется среда временно на момент сеанса ТС (т.е. только его внутренняя). Regdrv, которая всего-то весит 42.4 Кб (до 500 Кб далеко), можно и не иметь, подключим через WMI. И скрипт, как я уже писал, легко объединяем. Вопрос только в выборе утилиты (для vd, в принципе, и так всё готово). Я хотел сперва их объединить, но не видя чёткой аргументации в пользу ImDisk, делать это пока не хочу. Кстати говоря, мне известны ещё пару вещей (1, 2).
Iori писал(а):С вашем решением через regdrv.exe, драйвер будет деинсталлироваться после выхода ис ТС?
Несложно было в этом убедиться, пройдя по ссылке, не правда ли? :wink:

Добавлено: Ср фев 10, 2016 21:14
Iori
Flasher
Я просто не вижу в нём смысла, когда есть указанная VD_FileDisk, где всего один exe-шник и драйвер под каждую из битностей, в то время как в ImDisk 1x3 утилиты, 2x3 драйвера и 1x3 сервиса. Т.е. 4 требуемых для работы файла (154,8 Кб) против 12-ти (491,9 Кб), не говоря уже повторно о том, что драйвер от первой даёт возможность пользоваться параллельно и плагином
Это верно, убидили. Сейчас буду пытаться настроить VD_FileDisk под кнопки.
Пока не особо.
Ну да! :oops:

PS:
Flasher

Можете выложить ваш autorun.cfg для VD_filedisk-a?
То-есть загрузка драйвера "vd_filedisk.sys" в зависимости от битности системы и выгрузка драйвера при выходе из ТС.

PS2:
Я так подумал что autorun может и не подойти для моих нужд.
Если драйвер загружается вместе с TC, то что будет происходить на компютерах где у пользователя нет админ прав?

Добавлено: Чт фев 11, 2016 00:34
Flasher
Iori писал(а):Я так подумал что autorun может и не подойти для моих нужд.
Если драйвер загружается вместе с TC, то что будет происходить на компютерах где у пользователя нет админ прав?
Если нет админских прав и запуска с повышением при необходимости, то без разницы, откуда пытаться запускать драйвер, система этого не даст сделать. Autorun в данном случае - это всего лишь прослойка в исходной среде запуска из ТС, зато у него есть переменная %AUTORUN_ISADMIN%, которая позволяет производить запуск только при наличии этих админских прав.

Добавлено: Вт фев 16, 2016 02:02
Iori
Flasher

Спасибо за помощь. Остановился на wincdemu. Работает отлично. :)

Добавлено: Вт фев 16, 2016 10:45
Flasher
Iori
Если речь про Portable, то она гуишная. И как тогда это относится к запрошенным кнопкам? А для batchmnt.exe установкой одного BazisVirtualCDBus.sys не обойтись, в то время как BazisPortableCDBus.sys для неё не годится. И ещё она только под CD/DVD/BD, но не FD/HDD.

Добавлено: Ср фев 17, 2016 06:08
Iori
Flasher
Если речь про Portable, то она гуишная.
Она запускается из командной строки. Можно проверить что она умеет делать запустив её с /?.
И как тогда это относится к запрошенным кнопкам?
Относительно так: Я запросил кнопки под imdisk. Кнопки мне ни кто не привёл. Я потом сам догадался как их сделать. Imdisk мне чем-то не понравился. Не помню чем сейчас. Потом речь шла про VD_filedisk.
Кнопки мне никто не привёл, а сам я не смог их создать.
Вот и остановился на WinCdEmu.

Жалко он не работает с образами дискет и дисков. И не всегда работает под WinPe. :(, а это для меня важно. :(
А для batchmnt.exe установкой одного BazisVirtualCDBus.sys не обойтись, в то время как BazisPortableCDBus.sys для неё не годится.
Как понять не обойтись? А что ещё нужно?

Добавлено: Ср фев 17, 2016 15:58
Flasher
Iori писал(а):Можно проверить что она умеет делать запустив её с /?.
Хм. Тогда уже неплохо. Единственное, что мне не нравится, что сам он файл кидает в drivers. А так вариант вполне себе годный. Но это легко обходится предустановкой из Autorun.

vd_filedisk тоже имеет минусы. Это нелепое номерное ограничение 0-3, которого, как ни странно, нет в плагине, и необходимость заведомо знать, какие номера ранее уже присваивались.
Iori писал(а):Как понять не обойтись? А что ещё нужно?
С учётом того, что сам PortableWinCDEmu-4.0 работает с комстрокой, про этот момент можно уже забыть.

C autorun.cfg разобраться удалось? Или помочь?

Добавлено: Ср фев 17, 2016 20:15
Iori
Flasher
C autorun.cfg разобраться удалось? Или помочь?
Спасибо за предложение, но я пока без него обхожусь.

Если кому интересно, то вот мои кнопки.

Код: Выделить всё

TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\Utilities\WinCDemu\install&mount.cmd"
%V
%COMMANDER_PATH%\Utilities\WinCDemu\WinCDEmu.exe
Mount Image with WinCDemu

1
-1

Код: Выделить всё

TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\Utilities\WinCDemu\unmount&uninstall.cmd"

shell32.dll,153
Unmount The Mounted Virtual Drive with WinCDemu

1
-1
Содержание батников.
[cut]
if exist %windir%\system32\drivers\BazisPortableCDBus.sys goto :skp
pushd "%~dp0"
"%~dp0\WinCDEmu.exe" /install

:skp
popd
"%~dp0\WinCDEmu.exe" "%~f1" V:
[/cut]

[cut]
pushd "%~dp0"
"%~dp0\WinCDEmu.exe" /unmount V:

if exist %windir%\system32\drivers\BazisPortableCDBus.sys goto :skp

:skp
popd
"%~dp0\WinCDEmu.exe" /uninstall
[/cut]

Сама программа здесь.
http://wincdemu.sysprogs.org/portable/

Добавлено: Ср фев 17, 2016 20:36
Flasher
Iori
В итоге имеем нерешённые проблемы:
1. Драйвер останется в чужой системе, если забыть нажать вторую кнопку.
2. Необходимость этот самый драйвер переносить в папку drivers без ведома др. владельца.
3. Диск в первом батнике - V:, а не свободный.
4. Во втором батнике прописан /uninstall, перед которым имеет смысл отмонтировать все диски, а не только образ под курсором.
5. Чёрные окна, без которых вполне можно обойтись.

Добавлено: Ср фев 17, 2016 21:42
Iori
Flasher

1. Можно решить через тот же самый autorun.
2. Можно решить с помощью regdrv.
3. Можно не ставить диск вообще, тогда wincdemu монтирует образ на первый свободный диск.
4. Решается через /unmountall
5. Можно через %comspec% и &&.

Добавлено: Чт фев 18, 2016 03:18
Skif_off
Iori
4. /unmountall - форменное хулиганство на чужой системе.

Добавлено: Чт фев 18, 2016 05:21
Flasher
Iori
Я знаю, что можно, а что нельзя. Но можно и сделано - не одно и то же.
2. Можно и без. 5. Это не решение.

Skif_off
Это ещё почему? Пустые неотмонтированные диски - вот форменное хулиганство! Ещё какое. Ты пришёл со своим драйвером, будь любезен отмонтировать всё, что им подключено.