Есть ли способ заменить отдельный файл в инсталяторе msi ?!
Здравствуйте, Аноним, Вы писали:
А>Есть ли способ заменить отдельный файл в инсталяторе msi ?!
Есть такая утилитка MsiDb.exe (входит в состав Install SDK). Предназначена как раз для подобных вещей. Но при этом надо знать, что в msi обычно не просто файлы лежат, а уже пожатые в cab'ы. А посему сначала нужно вытащить cab:
MsiDb.Exe -dPAKAGE_NAME.msi -xCAB_FILE_NAME.cab, затем его подправить как надо и закатать обратно:
MsiDb.Exe -dPAKAGE_NAME.msi -kCAB_FILE_NAME.cab — удаляем старый;
MsiDb.Exe -dPAKAGE_NAME.msi -aCAB_FILE_NAME.cab — пихаем новый.
Если кабов нет, то с файлами работает анологичным образом.
Те же операции можно проделать и самостоятельно с помощью объекта Record из объектной модели Windows Installer. С помощью ReadStrem, ClearDate & SetStream.
Надеюсь, что нужно все это не для того, чтобы запихивать троянов в чужие инсталляхи
Здравствуйте, IBoB, Вы писали:
IBB>Здравствуйте, Аноним, Вы писали:
А>>Есть ли способ заменить отдельный файл в инсталяторе msi ?!
IBB>Есть такая утилитка MsiDb.exe (входит в состав Install SDK). Предназначена как раз для подобных вещей. Но при этом надо знать, что в msi обычно не просто файлы лежат, а уже пожатые в cab'ы. А посему сначала нужно вытащить cab:
IBB>MsiDb.Exe -dPAKAGE_NAME.msi -xCAB_FILE_NAME.cab, затем его подправить как надо и закатать обратно:
IBB>MsiDb.Exe -dPAKAGE_NAME.msi -kCAB_FILE_NAME.cab — удаляем старый;
IBB>MsiDb.Exe -dPAKAGE_NAME.msi -aCAB_FILE_NAME.cab — пихаем новый.
IBB>Если кабов нет, то с файлами работает анологичным образом.
IBB>Те же операции можно проделать и самостоятельно с помощью объекта Record из объектной модели Windows Installer. С помощью ReadStrem, ClearDate & SetStream.
IBB>Надеюсь, что нужно все это не для того, чтобы запихивать троянов в чужие инсталляхи
Спасибо за подробный ответ, буду разбираться.
Нужно заменить dll старую на новую