Запись: доступ к файлам msi внутри Bootstrapper.exe

Вопрос. Можем ли мы получить доступ к msi-файлам (и другим установщикам), упакованным с помощью Burn Bootstrapper, во время установки?

Скажем, если нам нужно прочитать какое-то свойство или применить mst непосредственно перед началом установки и т. д.

Это возможно?


person Farrukh Waheed    schedule 21.05.2013    source источник


Ответы (1)


Вы пытались добавить преобразование в качестве полезной нагрузки в свой элемент MsiPackage и установить свойство TRANSFORMS с помощью элемента MsiProperty?

<MsiPackage ...>
    <Payload Compressed="yes" SourceFile="c:\mytransform.mst"/>
    <MsiProperty Name="TRANSFORMS" Value="mytransform.mst" />
</MsiPackage>

Если вам действительно нужно получить путь к встроенным полезным нагрузкам, и если вы используете стандартный загрузчик, вам потребуется создать bafunctions.dll и написать код на C/C++.

Чтобы создать bafunctions.dll, сначала загрузите исходный код wix и используйте проект src\burn\samples\bafunctions в качестве примера. Чтобы использовать скомпилированную bafunctions.dll, добавьте ее в качестве полезной нагрузки в загрузчик.

<BootstrapperApplicationRef ...>
    <Payload Compressed="yes" SourceFile="c:\bafunctions.dll" />
</BootstrapperApplicationRef>

Этого достаточно, чтобы стандартный загрузчик вызывал обратные вызовы bafunctions.dll. У вас есть обратные вызовы для OnDetect(), OnDetectComplete(), OnPlan(), OnPlanComplete(). Вы можете использовать эти функции для выполнения некоторых нетривиальных обнаружений и получения/установки переменных записи.

В этом сообщении есть пример использования bafunctions.dll для получения пути к встроенной полезной нагрузке во время выполнения: Как передать путь к полезной нагрузке пакета в msi?

person Alex    schedule 21.10.2015