Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Windows [игнор отключен] [закрыт для гостей] / При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64? / 15 сообщений из 15, страница 1 из 1
05.04.2015, 10:26
    #38927290
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Не знаю, в той ли ветке форума пишу, но не в .Net же об этом спрашивать.

inf для установки драйвера на x64 систему
Смысл в том, что один из модулей идет в двух вариантах (32бит и 64бит) -так надо и так бывает.


32-битный копируется так (в SysWow64, где лежат 32-битные файлы)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
[SourceDisksNames]
1 = %DiskId1%,,,""

[SourceDisksFiles]
mydll.dll = 1,,

[DestinationDirs]
MYDLL.CopyFiles=10,SysWow64 ; x64-specific

[MYDLL.CopyFiles]
mydll.dll



64-битный копируется так (в System32, где лежат 64-битные файлы)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
[SourceDisksNames]
1 = %DiskId1%,,,""

[SourceDisksFiles]
mydll.dll = 1,,

[DestinationDirs]
MYDLL.CopyFiles=11; system32 (на 64-битной системе)

[MYDLL.CopyFiles]
mydll.dll



Обе процедуры рабочие, но надо это дело совместить.

По хорошему надо:
mydll32.dll -> mydll.dll (в SysWow64)
mydll64.dll -> mydll.dll (в System32)

Но не знаю как из SourceDisksFiles мувнуть файл в DestinationDirs, при этом с переименованием.

Практически я могу это сделать вне процедуры установки драйвера (на установку и работоспособность не повлияет, т.к. достаточно подписать только inf с помощью каталога чтоб он встал), но так делать не хочется, все-таки драйвер.
Драйвер ссылается на указанный модуль по его имени (mydll.dll), при этом использование того или иного модуля зависит от того какая прога (32-битная или 64-битная) работает с девайсом.

Знает кто как такое копирование в драйвере прописать?
...
Рейтинг: 0 / 0
05.04.2015, 11:09
    #38927302
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Раскладываем одноимённые файлы по x86 и amd64 подкаталогам и читаем MSDN .
...
Рейтинг: 0 / 0
05.04.2015, 13:32
    #38927377
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Basil A. SidorovРаскладываем одноимённые файлы по x86 и amd64 подкаталогам и читаем MSDN .

Немного не об этом речь идет.
По твоей ссылке говорится о том как один inf использовать для установки 32-битного(на x86 OS) и 64-битного драйвера(на x64OS).
Предполагается что на x86 будут браться файлы из каталога x86, на x64 -из каталога x64 (надо выбрать откуда брать файл).

Мне не влом написать разные инфы с [... .NTamd64] и [... .NTx86], это не проблема.


У меня более тяжелый случай.
Для варианта [... .NTamd64] надо скопировать dll сразу в двух вариантах, т.е. оба варианта нужны при одной инсталляции.
И здесь только переименование думаю.

Если msdn, то документация тут:

INF CopyFiles Directive

Код: plaintext
1.
2.
[file-list-section]
destination-file-name[,[source-file-name][,[unused][,flag]]]



Но нашел статейку, где гораздо популярнее и с примерами все разжевано:
Copy Files Section

В итоге извернулся:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
[SourceDisksNames]
1 = %DiskId1%,,,""

[SourceDisksFiles]
mydll _x86.dll = 1,,
mydll_x64.dll = 1,,

[Device]
...
CopyFiles=MYDLL_X86.CopyFiles, MYDLL_X64.CopyFiles

[DestinationDirs]
MYDLL_X86.CopyFiles=10,SysWow64 ; x64-specific
MYDLL_X64.CopyFiles=11 ; System32 on x64

[MYDLL_X86.CopyFiles]
mydll.dll,mydll_x86.dll

[MYDLL_X64.CopyFiles]
mydll.dll,mydll_x64.dll

...
DiskId1 = "Proga Installation Disk"



Т.е. я копирую два файла из папки с inf-ом (там они с разными именами), в две папки System32(11) и SysWow64(10), но уже с одним именем.
М.б. конечно можно извратиться и вытаскивать из 2-х папок, но не буду умничать.


авторПрактически я могу это сделать вне процедуры установки драйвера (на установку и работоспособность не повлияет, т.к. достаточно подписать только inf с помощью каталога чтоб он встал), но так делать не хочется, все-таки драйвер.

А вот так делать не надо. Inf обеспечивает автоматику замены файла (в крайнем случае после перезагрузки),
а файл может быть In Use (и с высокой вероятностью так и будет),
простое Copy инсталлятором может ой как поднасрать.
...
Рейтинг: 0 / 0
05.04.2015, 13:56
    #38927389
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Дмитрий77Для варианта [... .NTamd64] надо скопировать dll сразу в двух вариантах, т.е. оба варианта нужны при одной инсталляции.
И здесь только переименование думаю.Не надо думать - надо откопировать строчку из x86-секции в amd64-секцию и поменять в этой копии целевой каталог.
Или просто проверить, что винда умнее обычного.
...
Рейтинг: 0 / 0
05.04.2015, 14:44
    #38927406
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Basil A. Sidorov,

ты хоть понял что мне надо?
У меня 64-битный драйвер (о 32-битном речь не ведем)
и есть только amd64-секция
но при этом мне надо копирнуть dll, которая для этого драйвера нужна в обоих вариантах (32бит и 64 бит) - на 64-битной системе.
Wave Transform модуль Unimodem драйвера, на который ссылается драйвер любого голосового модема.
Не будет 32-битная TAPI прога голос через 64-битную dll играть (даже на 64-битной OS).
Если интересно, могу подробнее, технически я задачу решил, то чего здесь обсуждаем -мелкие детали.
Модем эту dll копировать не должен, она типа "есть в системе".
10 лет как неработоспособная, с тех пор как Висту в муках родили.
Microsoft этот баг дотащил до 8.1 и в 10-ке изменений не предвидится.

Вот примеры истерических (дискуссиями назвать сложно):

Voice Modem problems with Unimodem Transform Module

Will Vista ever fully support voice modem based on conexant chip s

А решение простое - сп*здить позаимствовать этот модуль из XP (или лучше сразу из XP/2003 x64 в 2-х вариантах).
И понятно что надежнее всего фикс имплементировать в драйвер устанавливаемого модема.
...
Рейтинг: 0 / 0
05.04.2015, 18:16
    #38927457
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Дмитрий77ты хоть понял что мне надо?А вы хоть поняли, что вам посоветовали?У меня 64-битный драйвер (о 32-битном речь не ведем)
и есть только amd64-секцияВ этой секции запрещено указывать "x86\файл", "amd64\файл" или у вас идиосинкразия на подкаталоги?
...
Рейтинг: 0 / 0
05.04.2015, 23:04
    #38927588
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Basil A. Sidorov,

Я поступаю по другому.
Инсталлятор проги копирует несколько папок типа Win32, x64, XP в папку с программой,
потом анализирует ОС:
1) 32 bit
или
x64
2) WinXP/2003
или
выше, т.е. (Vista-8.1, Win2008-2012R2 ++)
По результатам анализа скидывает нужные файлы в основную папку и запускает процесс установки драйверов (т.е. при установке файлы берутся из тек. директории, где лежит inf а не из подпапок).

Две папки x86 и x64 вообще говоря недостаточно. Для XP/2003 файлы лучше подписывать тестовым Root-сертификатом, а на >=Vista нужен CodeSigning (причем на XP для драйверов он бесполезен, т.е. не подавляет диалоговые окна, а Test Root как раз подавляет). Т.е. разные cat-файлы надо использовать.

Basil A. SidorovА вы хоть поняли, что вам посоветовали?
Проиллюстрируй листингом, если вдруг не понял.

Basil A. SidorovУ меня 64-битный драйвер (о 32-битном речь не ведем)
и есть только amd64-секцияВ этой секции запрещено указывать "x86\файл", "amd64\файл" или у вас идиосинкразия на подкаталоги?
Это только доказывает что так делать нельзя:
авторРаскладываем одноимённые файлы по x86 и amd64
(т.е. копировать из этих двух обоих каталогов -вот с такими именами- в моем случае)

А где я это использую?
Вот это?
[MYDLL_X86.CopyFiles]
[MYDLL_X64.CopyFiles]
Это просто имена секций (без скрытого подтекста), могу написать:
[MYDLL32.CopyFiles]
[MYDLL64.CopyFiles]
...
Рейтинг: 0 / 0
06.04.2015, 14:54
    #38928125
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Дмитрий77Я поступаю по другомуНу так не поступайте так.
Поступайте так, как рекомендовано на MSDN и не мешайте системе делать её работу.

P.S.
- Но вам же шкаф загораживает окно?!
- А вы на шкаф залезьте ...
...
Рейтинг: 0 / 0
06.04.2015, 16:31
    #38928292
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Basil A. Sidorov,

Ну, я свой листинг привел. Противоречий с msdn не вижу. И все работает.
Приведи свой если не согласен, соблюдая условия задачи.

Два файла с одинаковым именем, 64-битный отправляется в System32, 32-битный > в SysWow64.
...
Рейтинг: 0 / 0
06.04.2015, 17:51
    #38928409
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Если вас не устраивает моё предложение (иерархия каталогов-источников, исключающая необходимость переименования) - возитесь с переименованиями самостоятельно.
...
Рейтинг: 0 / 0
07.04.2015, 12:09
    #38929050
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Basil A. Sidorov,

Допустим устраивает.
Но как мне "прогнать через inf" два файла с одинаковым именем?

mydll.dll (в каталоге \catalog1) -> в System32 (ну 11, это понятно)
mydll.dll (в каталоге \catalog2) -> в SysWow64 (ну 10, это тоже понятно)

Я ж не случайно "рабочий" листинг прошу, если знаешь как это сделать.
"Читай msdn, тупица" сам понимаешь не ответ.
То что я понял (из msdn и из вспомогательных статей) как мувнуть файл из своей директории при этом с переименованием (чем в общем-то ответил на свой вопрос), уже неплохо.
...
Рейтинг: 0 / 0
07.04.2015, 18:29
    #38929718
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Дмитрий77Но как мне "прогнать через inf" два файла с одинаковым именем? SourceDisksFiles , SourceDisksNames .
Может ещё чего можно придумать, но вариант с разными "дисками" для одноимённых файлов - лежит на поверхности. Подкаталоги для того и требуются, чтобы разные "диски" можно было объединить в один.
...
Рейтинг: 0 / 0
07.04.2015, 20:53
    #38929829
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Basil A. Sidorov,

Ну, ты таки листинг не привел.
И честно говоря не понятно как сделать то что мне нужно.

Секции с .x86 на 64-битной ОС я использовать не могу. Остается вариант .amd64, потом "общая", как-то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
[SourceDisksNames]
1 = %DiskId1%,,,""

[SourceDisksFiles]
umdmxfrm1.dll = 1,\x86 ; on distribution disk 1, in subdir \x86

[SourceDisksNames.amd64]
1 = %DiskId1%,,,""

[SourceDisksFiles.amd64]
umdmxfrm1.dll = 1,\x64 ; on distribution disk 1, in subdir \x64

[DestinationDirs]
UMDMXFRM1_X86.CopyFiles=10,SysWow64 ; x64-specific
UMDMXFRM1_X64.CopyFiles.amd64=11 ; System32 on x64

[UMDMXFRM1_X86.CopyFiles]
umdmxfrm1.dll,umdmxfrm1.dll

[UMDMXFRM1_X64.CopyFiles.amd64]
umdmxfrm1.dll,umdmxfrm1.dll


Но я не проверял, нет у меня уверенности что это сработает, т.е. что он мне скопирует оба файла откуда надо куда надо,
при этом не напутав.
То что мне надо установить и 32-битный umdmxfrm1.dll тоже -на 64-битной системе - это понятно? (есть подозрение что нет, без обид, это нестандартная ситуация)

Мой то вариант с переименованием точно рабочий и вполне понятный, а за ахинею что я сейчас накатал не ручаюсь.
...
Рейтинг: 0 / 0
08.04.2015, 17:42
    #38930970
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Дмитрий77Ну, ты таки листинг не привел.
И честно говоря не понятно как сделать то что мне нужноВ вашем листинге - один "диск". Поэтому - вы не поняли, что я предложил.

P.S. Представьте, что у вас на двух дискетах в разных каталогах лежать одноимённые файлы ...
...
Рейтинг: 0 / 0
08.04.2015, 20:20
    #38931126
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64?
Basil A. Sidorov,

Ну приведи правильный листинг (как ты считаешь), чего вокруг да около ходить.
...
Рейтинг: 0 / 0
Форумы / Windows [игнор отключен] [закрыт для гостей] / При установке драйвера скопировать 2 разных файла с одинаковым именем в system32/syswow64? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]