Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Обнаружение x86 / x64 и установка правильного .msi

Автор вопроса: Jeremy SenaОтветов: 4

Я дорабатываю заявку, которая скоро будет отправлена ​​на проверку программы 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?

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

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

Итак, определение x86 / x64, похоже, рассматривается здесь. А как насчет ручного запуска выбранного вами MSI-файла?

x86-64windows-installercrystal-reportsmerge-module

Ответы

Ответ 1 · рейтинг 8 · Kevin Kibler

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

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

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

Ответ 2 · рейтинг 1 · MicSim

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

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

Ответ 3 · рейтинг 1 · Jim

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

Ответ 4 · Andrew Shepherd

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы