Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Перепаковка MSI при помощи WiMakCab.vbs

Ответить
Настройки темы
VBS/WSH/JS - Перепаковка MSI при помощи WiMakCab.vbs

Аватара для m0nkrus

Старожил


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

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


Есть такой стандартный скрипт WiMakCab.vbs, идущий в комплекте с серверной виндой. С его помощью, кроме всего прочего, можно взять msi-инсталлер + комплект устанавливаемых файлов россыпью и превратить в msi-инсталлер + cab-архив, в который помещается все, что раньше было россыпью. Прежде чем упаковывать, скрипт создает промежуточный ddf-файл, в который помещает список файлов для упаковки. Так вот, для некоторых msi-инсталлеров этот ddf создается некорректно. Он просто теряет часть имен файлов. Как итог, результат становится непригодным для использования.

Я заметил закономерность, какие имена файлов попадают в ddf, а какие нет. Если залезть внутрь msi, то среди таблиц имеется File.idt. В ней каждая строка посвящена одному файлу.

Такого типа строки проходят в ddf:
Код: Выделить весь код
SWL_ACAD_EXE	LCK_ACAD	acad.exe	5913984	30.0.47.0	0	0	3303
_3D_model.dwg._A476F1115068	_3D_model.dwg._A476F1115068	3D_model.dwg	128096			0	15
_ASMBASEA.dll._0EE808D7680D	_ASMBASEA.dll._0EE808D7680D	kzz8rfng.dll|ASMBASE226A.dll	1307448	226.0.0.65535	0	0	571
А вот такие строки скриптом игнорируются:
Код: Выделить весь код
TKY2JGD._par.1C7043BC_1407_4BA9_9B01_E0A7AB8D297A	TKY2JGD._par.1C7043BC_1407_4BA9_9B01_E0A7AB8D297A	ckybkio2._pa|TKY2JGD._par	4707900			8704	3304ReadMe.txt.1C7043BC_1407_4BA9_9B01_E0A7AB8D297A	ReadMe.txt.1C7043BC_1407_4BA9_9B01_E0A7AB8D297A	ReadMe.txt	4358			8704	3291
RDF_COMP_AecbPartBaseRes.dll.1F1E4850_FEE5_41E5_BFB	RDF_COMP_AecbPartBaseRes.dll.1F1E4850_FEE5_41E5_BFB	AecbPa~1.dll|AecbPartBaseRes.dll	419200	8.3.51.0	1033	8192	3276
Полагаю, разница в формате "хвоста" имени файла. Но вот что конкретно является причиной "выбивания" длинных "хвостов", длина ли имени, его формат, разделители, недостающие элементы строки или что-то еще, я уже понять не в состоянии. Кто-нибудь может помочь разобраться, а еще лучше допилить скрипт, чтобы он создавал ddf-файл с полным списком имен, чтобы получался рабочий результат?

Для тестирования прикладываю сам скрипт и один из msi-инсталлеров, с которым у меня проблемы: https://yadi.sk/d/sqR4R5DXyGEYxQ
Остальные установочные файлы не нужны. Чтобы создать ddf-файл запустите команду cscript WiMakCab.vbs acad.msi Data1

Отправлено: 10:47, 02-04-2020

 

Аватара для m0nkrus

Старожил


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

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


Iska, не получится. Посмотрел я 7zip-овский msi-инсталлер. Во-первых, там нет файлов россыпью - всё внутри в cab-файле в стриме. Во-вторых, все файлы имеют одинаковый формат. Этот инсталлер не соответствует техзаданию.

Но я придумал вариант с тем небольшим инсталлером, о котором писал выше, с тем, который самостоятельно не запускается, а только в составе пакета. Его оказалось можно запустить самостоятельно в режиме административной установки. Вот комплект, включая скрипт и используемый им упаковщик: https://yadi.sk/d/D9tA55UHyBKF7w

1. Упаковываем файлы россыпью в cab командой cscript WiMakCab.vbs /C /U ACAOE.msi Data1
2. Убираем из папки файлы росыпью, оставляя только ACAOE.msi, Data1.cab, ACAOE_build.xml
3. Запускаем административную установку командой msiexec.exe /a ACAOE.msi

У меня установка упирается в отсутствие файла UPICA.dll. По опыту скажу, что если пройти этот файл, то будут еще стопы на Aec32BitAppServer57.exe, Aec32BitAppServer57.tlb, UPI.dll, UpiConfig.xml. Если кинуть этот набор файлов россыпью рядом с ACAOE.msi, то инсталлер их скушает без ругани. С этим инсталлером я обычно так и поступаю. Но вот когда я работаю с acad.msi, там слишком большой объем приходится "выставлять за дверь", что делает всю работу по упаковке бессмысленной.

Отправлено: 09:18, 05-04-2020 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Перепаковка MSI при помощи WiMakCab.vbs

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
7 / 2008 R2 - Перепаковка WinSXS и удаление кеша драйверов при подготовке усановочного диска Rupinskiy Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 2 12-04-2015 23:05
VBS/WSH/JS - Прошу помощи в VBS Destany Скриптовые языки администрирования Windows 3 06-06-2013 13:20
2008 R2 - Отказ в доступе к шаре при запуске скрипта при помощи ГП SANIOK_AV Windows Server 2008/2008 R2 3 11-10-2012 20:26
7 / 2008 R2 - [решено] Ошибка при удалении ненужных компонентов при помощи DISM ruslanhamidov80 Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 4 10-10-2011 15:24
VBS/WSH/JS - Помогите редактировать Autorun_Disable.vbs на Autorun_Enable.vbs nod201 Скриптовые языки администрирования Windows 0 05-12-2009 05:44




 
Переход