2009-03-27 5 views
4

Я завершаю приложение, которое вскоре будет отправлено на проверку программы Windows Logo. Одним из требований является совместимость с x64. В частности, Crystal Reports 2008 должен работать под x64.Обнаружение x86/x64 и установка правильного .msi

Моя проблема заключается в том, что Crystal Reports basic 2008 (тот, который упакован в Visual Studio 2008) не имеет модулей слияния и должен быть установлен с помощью предоставленных .msi-инсталляторов. Они предлагают отдельные установщики для x86 и x64.

Как я могу определить x86 и x64 во время установки, а затем запустить соответствующий Crystal msi? Возможно ли это даже без модулей слияния?

EDIT:

Это:

IF PROCESSOR_ARCHITECTURE == x86 AND 
    PROCESSOR_ARCHITEW6432 NOT DEFINED THEN 
    // OS is 32bit 
ELSE 
    // OS is 64bit 
END IF 

, кажется, скажите мне, как обнаружить его (спасибо MicSim). Но как это сделать в MSI? Это обычное действие? И затем, как я могу инициировать различные требуемые msi для хрустальных отчетов x32 и x64?

И почему кристалл x86 не работает под WOW64? Вы должны установить x64 Crystal для работы с вашим WOW64 x86-приложением. Разочарование ...

EDIT 2:

Хорошо, так что обнаружение x86/x64, кажется, здесь рассматривается. Теперь о том, как вручную запускать msi по вашему выбору?

ответ

8

Самый простой способ обнаружить 64-разрядную операционную систему - использовать свойство VersionNT6. Это свойство может использоваться в условиях для компонентов или пользовательских действий (например, условие Not VersionNT6 будет справедливо только для 32-разрядных операционных систем).

Что касается установки других пакетов MSI во время установки, это немного сложнее. Установщик Windows разрешит только одному MSI выполнять Выполнение последовательности за раз. Это означает, что вы должны либо установить свой Crystal Reports MSI в течение UI Sequence с помощью пользовательского действия (будьте осторожны, если вы это сделаете, последовательность UI-кода пропущена, если MSI запущен в бесшумном режиме) или создать какой-то вид программы bootstrapper, которая будет запускать как MS Crystal Reports, так и вашу собственную последовательность.

Я никогда не создавал свой собственный загрузчик, но у InstallShield есть программа bootstrapper, встроенная в файл setup.exe; они называют пакеты, установленные таким образом Предпосылки.

1

Просто выполните поиск по Google: если у вас есть проект MSI, вы можете проверить свойства, как описано here.

Для получения дополнительной информации об обнаружении процесса и архитектуры ОС вы можете прочитать this MSDN blog о «HOWTO: Detect Process Bitness».

1

Вы можете вызвать MSI Crystal Reports с помощью специального действия, которое выполняет [SystemFolder] msiexec. Просто укажите «/ i [YourFolderWithCRMSI] msiname.msi» в качестве аргументов.

+0

Вы также можете добавить/q как параметр, так что он не беспокоит клиента. –