2014-12-15 1 views
3

Мне нужно создать пакет MSI, который устанавливает 32-разрядные и 64-разрядные .dll-файлы плагина на основе firebreath на машине.Создайте пакет msi, который устанавливает как 32-разрядные, так и 64-разрядные ресурсы на машине

Что я хочу достичь, так это то, что оба ресурса установлены и используют один подходящий в зависимости от браузера (32-разрядный или 64-разрядный). Например, если у меня 64-разрядная машина с Windows, 64-разрядная и 64-разрядная версии Chrome, 32-битная версия Firefox; Я хочу иметь возможность использовать мой плагин из обоих браузеров.

Для этого я использую Visual Studio 2008 и Wix. До сих пор мне удалось создать 32-разрядную .dll, которая преобразуется в 32-разрядную .msi и 64-разрядную .dll, которая не может быть преобразована в 64-разрядную .msi из-за высокой температуры. Исключить ошибку. Я получаю что-то похожее на это: https://groups.google.com/forum/#!msg/firebreath-dev/HmGYEgZamUQ/35WJWfB4zegJ

Реализация, упомянутая ранее, создала бы 2 разных установщика .msi (если 64-разрядный msi не сработал). Я хотел бы создать файлы .dll (32-разрядные .dll и 64-разрядные .dll), а затем упаковать их в один установщик .msi, который регистрирует оба.

Возможно ли это, и если да, то какой был бы лучший способ сделать это?

+0

Кристофер прав, самый чистый способ - создать два пакета MSI, завернутые загрузчиком. Большинство инструментов создания настроек могут помочь вам в этом. –

ответ

7

Установщик Windows не поддерживает это. Строго говоря, пакет .MSI является специфичным для платформы. Есть несколько хаков и трюков для создания «гибридного» установщика. Это влечет за собой создание 32-битной MSI, которая подрывает проверки MSI для установки файлов на 64-битные местоположения и пользовательские действия для создания 64-битных разделов реестра.

Ответ на вопрос - создать 32-битную и 64-битную MSI, а затем инкапсулировать их в загрузочный блок, который регистрируется в программах и компонентах и ​​устанавливает 2 MSI под обложками. В WiX это будет достигнуто с помощью Burn, чтобы объединить 2 установщика вместе.

+0

Да; в основном лучшее, что вы можете сделать, это создать установщик .exe (наш находится в NSIS), который условно устанавливает либо оба, либо просто 32 бит в зависимости от платформы. – taxilian

+1

Я бы не использовал NSIS или другие записи самостоятельно, потому что WiX Burn изначально понимает MSI и обрабатывает много проблем для вас автоматически. Установка, удаление, обновление, кэширование и т. Д. –

+0

не использовали WiX burn; Вероятно, я должен проверить это на одном из этих дней. – taxilian

0

то, что я буду делать в таком сценарии, заключается в том, чтобы сосредоточиться в основном на 64-битном установщике, а не на создании другого установщика и его самонастраивании.
Ниже мой подход к тому же, пожалуйста, укажите мне, если я ошибаюсь.

Как Koka хочет установить установщик, который настроит вещи для плагина браузера и сделает использование браузером в соответствии с платформой. В таком случае рассмотрим
1> OS 32 бит, поэтому нет возможности 64-битного броузера, поэтому просто установите установщик с настройками для 32-битного браузера.
2> Теперь os - 64 бит. возможно, 32/64 бит браузера, поэтому создайте установщик с различными компонентами для 32-битного и 64-битного 32-битного компонента, которые будут настраивать вещи для 32-битного броузера и того же с 64-битным компонентом. И оставить все остальное в ОС как 32-битный браузер всегда будет использовать 32-битный плагин firebreath.

Я считаю, Regsvr установит плагин для всех доступных браузеров, но считается, что bad practice в установщике.
Это не полное доказательство, поскольку во время установки плагина браузера есть много вещей, которые необходимо уделить разработчику при создании установщика.

+0

Есть ли какой-нибудь пример, который я мог бы просмотреть, чтобы иметь руководство по реализации вашего предложения? – KoKa

+0

Вы можете поделиться некоторым кодом, который добавит плагин для браузера? Создайте 64-битный установщик, как вы создали ранее, и добавьте еще один компонент, который будет выполнять ту же работу, но для 32-разрядных браузеров. Я имею в виду, что мне нужно установить драйвер на 64-разрядную систему. Если использовать окна драйверов по умолчанию, поиск по SYSWOW64 или SYSTEM32 в соответствии с битами приложения. поэтому при установке я буду устанавливать 32-битный и 64-битный драйвер за раз. (Это требуется только в 64-битной версии .SO, если вы добавите 32-битный файл браузера и 64-битные файлы браузера в 64-битном установщике, браузер автоматически примет бит. – Nimish

+0

даже просто создание 64-битного установщика с 64-битными бин-файлами плагинов браузера может не работать, поскольку браузер может быть 32-битным на 64-битном os.http: //www.codeproject.com/Articles/44191/Drivers-Installation-With-WiX имеет аналогичный пример. – Nimish