Обнаружение x86 / x64 и установка правильного .msi - PullRequest
4 голосов
/ 28 марта 2009

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

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

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

РЕДАКТИРОВАТЬ:

Это:

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

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

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

РЕДАКТИРОВАТЬ 2:

Хорошо, поэтому обнаружение x86 / x64, по-видимому, рассматривается здесь. А как насчет ручного запуска MSI по вашему выбору?

Ответы [ 4 ]

8 голосов
/ 28 марта 2009

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

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

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

1 голос
/ 21 апреля 2009

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

1 голос
/ 28 марта 2009

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

Для получения дополнительной информации об обнаружении процессов и архитектуры ОС вы можете прочитать этот блог MSDN о "HOWTO: Обнаружение битности процесса".

0 голосов
/ 15 июля 2009

Согласно этому форуму , Crystal Reports теперь включает модуль слияния для visual studio 2008.

HREF = https://smpdl.sap -ag.de / ~ sapidp / 012002523100005986132008E / cr10_net_mm.zip

Редактировать (от автора) : Оказывается, это не работает для Crystal Reports, поставляемой в комплекте с Visual Studio 2008.

...