Урок 27. Особенности создания инсталляторов для 64-битного окружения

24.01.2012

При разработке 64-битной версии приложения дополнительное внимание стоит уделить и вопросу дистрибуции программы. Ведь при установке на 64-битной операционной системе есть несколько нюансов, забыв о которых можно получить неработающий инсталляционный пакет.

Прежде всего, надо понимать, что сам дистрибутив программы (exe-файл, который запускает установку) может быть технически как 32-битным приложением, так и 64-битным. И если сделать этот дистрибутив 64-битным, то он не запустится на 32-битной системе. Обратите внимание, что он не сможет выдать сообщение вроде: "Вы пытаетесь установить дистрибутив 64-битной программы в 32-битной системе". Он просто выдаст сообщение о поврежденном файле. Таким образом, в большинстве случаев разумно делать инсталлятор всегда 32-битным приложением, даже если устанавливаться он должен только на 64-битной системе.

Важным аспектом функционирования 32-битных программ в 64-битной среде является механизм перенаправления, реализованный в Windows. Благодаря этому механизму старые 32-битные приложения, которые пытались обратиться, к примеру, к папке "c:\program files" автоматически будут обращаться к "c:\program files (x86)". А доступ к некоторым секциям реестра также будет автоматически перенаправлен.

Из-за механизма перенаправления при разработке инсталляторов часто бывает, что либо файлы оказываются не там, где ожидает разработчик, либо записи в реестре относятся не к тем разделам. Вы можете почитать о системе перенаправления в справочной системе MSDN: "File System Redirector",

Все эти нюансы настраиваются в любом современном инсталляторе, но об этом надо не забыть при подготовке дистрибутива, совместимого с 64-битными операционными системами.

При разработке инсталляторов для 64-битных версий часто делают один общий инсталлятор, который содержит в себе как 32-битные версии приложений и компонентов, так и 64-битные. В этом случае надо не забыть положить полные наборы компонентов, а также библиотеки зависимостей. Например, для приложений, разработанных с помощью Visual C++, часто в комплект кладут Visual C++ Redistributable Package. Этот пакет необходимо брать как в версии для x86, так и в x64 варианте.

Если инсталлятор использует какие-то сторонние модули для реализации сложной функциональности, то следует помнить об ограничении. Модули, собранные для 64-битного режима, не могут подгружать 32-битные динамические библиотеки и наоборот.

Авторы курса: Андрей Карпов (karpov@viva64.com), Евгений Рыжков (evg@viva64.com).

Правообладателем курса "Уроки разработки 64-битных приложений на языке Си/Си++" является ООО "Системы программной верификации". Компания занимается разработкой программного обеспечения в области анализа исходного кода программ. Сайт компании: http://www.viva64.com.

Контактная информация: e-mail: support@viva64.com, 300027, г. Тула, а/я 1800.