Заменить файл в несжатой установке

С помощью InstallShield я создал базовую установку MSI, в которой файлы несжаты.
Теперь я хотел бы заменить один из текстовых файлов в установке без повторной сборки MSI.
Может ли это быть сделать это без каких-либо проблем при запуске установки, удаления и т. д.?
Есть ли какая-то проверка размера \ CKSUM, которая сравнивает данные в msi с фактическим файлом?

Или надежнее будет отредактировать MSI с помощью ORCA и удалить этот файл из файловой таблицы?

Спасибо


person Epligam    schedule 29.06.2015    source источник


Ответы (1)


Вы должны иметь возможность сделать это, используя инструмент под названием MsiFiler. Замените файл в извлеченном образе, а затем запустите MsiFiler, как описано в:

https://msdn.microsoft.com/en-us/library/aa370108(v=vs.85).aspx

Другой способ - использовать такие инструменты, как msi2xml и xml2msi, для пересборки вашего пакета msi. Здесь много примеров:

Как заменить файл в установщике msi?

Надеюсь это поможет

person Kiran Hegde    schedule 10.07.2015
comment
Но что, если файлы не сжаты? безопасно ли заменять файл? Может ли InstallShield \ MSI как-то сохранять размер файлов \ дату \ контрольную сумму и сравнивать информацию с устанавливаемыми файлами? - person Epligam; 14.09.2016
comment
@Epligam: Все должно быть в порядке. У вас должна быть возможность обновлять атрибуты файла в таблице файлов, а также в таблице MsiFileHash с помощью инструмента из пакета SDK установщика Windows с именем: MsiFiler.exe. Это объясняет ваш вопрос? - person Kiran Hegde; 26.09.2016
comment
Возвращаясь к этой старой проблеме, нужно ли мне использовать этот инструмент, если я просто хочу заменить файл в установке, который уже не сжат? это файл, у которого нет версий вроде .pdf и .txt. - person Epligam; 01.11.2020
comment
@Epligam Да, вам нужно, потому что для неверсированных файлов хеш сохраняется в таблице MsiFileHash. - person Kiran Hegde; 02.11.2020