5

Я использую установщик VS2008 (плюс пользовательское действие Orca) для создания установщика для моего .NET-продукта.Как я могу установить установщик x86 x86 x86 на x64?

Недавно я узнал, что одна из сторонних сборок, которые я использовал, является x86-специфической (поскольку она включает в себя некоторый собственный код); таким образом, x64 клиенты получали сбои при запуске с ошибками в том, что сборка не подходит для их платформы.

Я отправил такого клиента копию версии этой сторонней сборки x64 и попросил его просто скопировать ее по существующей x86. Это сработало, сладкое! Так что теперь мне просто нужно сделать установщик сделать это для меня.

Это фактически выглядит нетривиальным :(В идеале, я просто хочу, чтобы установщик (который был бы x86, поскольку он мог работать на обеих платформах), чтобы включить как x86, так и x64 версии этой сторонней сборки, и установить Другими словами, я хочу, чтобы один установщик делал жизнь моих пользователей легкой.

Я думал, что это было разработано с использованием условных операторов MSI и всего этого. Но, по-видимому, нет ... проектов настройки VS2008 не будет компилироваться, если вы не укажете «x86» или «x64». Если вы укажете x86, он даст ошибку компиляции, заявив, что не может содержать сборку x64. Если вы укажете x64, результат не будет выполнен на компьютере x86 Черт!

У кого-то должна была быть эта проблема раньше. К сожалению, Google бесполезен, поэтому я перехожу к StackOverflow!

ответ

3

Если вы правильно поняли, вы хотите сделать копию одного файла, если вы устанавливаете на x86 и другой файл (с тем же именем), если вы устанавливаете на платформе x64.

Прежде всего, вы не можете создать один MSI для двух разных платформ, так как x64 MSI просто не будет работать на платформе x86, а MSI x86 будет установлен с использованием WOW64 на платформе x64.

С другой стороны, вы можете создать один MSI x86, содержащий две разные версии файла и выборочно скопировать соответствующий файл во время установки.

Самый простой способ - использовать WIX (V3) вместо встроенного генератора MSI VS2008.WIX дает вам гораздо больший контроль над тем, что устанавливается на машине клиента, и где, в качестве дополнительного бонуса, возможность генерации разных инсталляторов для разных платформ и полная поддержка MSBuild. (см. http://wix.sourceforge.net для получения дополнительной информации.)

В случае, если вам интересно, что WIX все еще находится в бета-версии, сгенерированные файлы MSI отлично подходят, и я еще не сталкивался с ошибкой. (И я разрабатываю проекты установки для жизни.)

Наконец, вы можете проверить свойство VersionNT64, если установщик x86 работает на платформе x64. Если это свойство присутствует, вы используете x64, иначе вы работаете на x86.

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

+0

Спасибо; я думаю, это лучшее решение. Когда вы скажете: «MSI x86 будет установлен с использованием WOW64 на платформе x64», означает ли это, что мое приложение закончит WOW64? И я полагаю, что это плохо. Так что, в конце концов, у меня может быть какой-то ускоритель для выбора между MSI? – Domenic 2008-12-24 19:14:35

6

Когда я изучил этот год назад, я пришел к выводу, что это невозможно. Стоит отметить, что многие MSI-файлы, поставляемые Microsoft, поставляются в разных вариантах x86 и x64 - и, предположительно, они будут поставлять только один файл, если это возможно.

1

У меня был некоторый успех, используя две функции для выборочного включения двух наборов файлов (в отдельных компонентах, конечно, с их индивидуальными идентификаторами файлов!).

Установка должна быть помечена как x32 для установки на x32 и x64. Он всегда будет устанавливаться в каталоги x32 и будет в основном рассматриваться как 32-разрядное приложение, работающее под WOW.

Используя свойство VersionNT64, вы можете определить, существует ли установка Windows 64 и условно установить нужные файлы.

Я не уверен, какая часть этих функций доступна в проектах установки VS2008. Я использую некоторые другие коммерческие инструменты для настройки установщика таким образом. Конечно, вы можете использовать Orca, чтобы сделать это тоже, хотя это было нетривиально, чтобы заставить его работать с коммерческими инструментами, а Orca намного сложнее.

Смежные вопросы