Похоже, есть две школы мысли здесь:
- релиз отдельные инсталляторы для каждой платформы.
Это самый простой подход, так как вам не нужно ничего делать в своем установщике. Многие из утилит Microsoft (в частности, все инструменты отладки) входят в отдельные пакеты x86/amd64/ia64; Однако я не уверен в их розничных продуктах.
- Объедините 32-разрядные и 64-разрядные инсталляторы в один.
Здесь у вас есть один монолитный 32-разрядный установщик, который будет работать на всех поддерживаемых в настоящее время платформах Windows; инсталлятор содержит двоичные файлы для каждой платформы. В установщике вы устанавливаете соответствующие бинарные файлы в зависимости от того, на какой платформе вы работаете. Я бы рекомендовал против этого, поскольку он требует много «магии» (пользовательский код, хаки и т. Д.), А также раздувает ваш установщик.
В настоящее время мы распространяем наш продукт, используя второй метод, но он оказался довольно головной болью, поэтому в будущем мы перейдем к первому методу. Единственным недостатком первого метода является то, что вы требуете от клиента использовать соответствующий установщик, хотя вы можете обернуть его в простой 32-разрядной оболочке, которая запускает соответствующий установщик.
Если 32-разрядная версия может работать на x86-64, зачем мне нужны отдельные дистрибутивы для разных платформ? – COMer
Вы не можете.Вам понадобится 64-разрядная версия, если вам требуется более 4 ГБ памяти (физическое расширение адреса еще ограничено 4 ГБ в Windows), чтобы использовать 64-разрядные инструкции только для драйверов для подключения к существующим 64-битным -битная программа и несколько других причин. В противном случае 32-разрядный должен быть точным. –
В дополнение к этим причинам 32-разрядная программа работает в эмулированной среде в 64-разрядных операционных системах. Иногда уровень эмуляции может мешать тому, что вы пытаетесь сделать; в этом случае лучшим решением является просто перекомпилировать его как 64-битную программу (http://blogs.msdn.com/b/oldnewthing/archive/2008/12/22/9244582.aspx). – Luke