Свернуть 64-битные и 32-битные версии приложения в один двоичный файл?
У нас есть приложение, которое мы пытаемся развернуть на 64-битной и 32-битной платформах. Есть ли способ поместить обе скомпилированные версии кода в один и тот же двоичный файл, например, в толстые двоичные файлы Apple и NeXT?
В идеале мы могли бы поставлять один.exe, который решает, какую версию кода выполнять. Мы ориентируемся на Windows XP и более поздние версии.
3 ответа
Один из подходов, возможно, заключается в предоставлении загрузочного приложения, которое определяет архитектуру и выбирает подходящий исполняемый файл для запуска. Так что в основном ярлык или то, что у вас есть для вашего приложения, просто запускает загрузчик, который, в свою очередь, запускает соответствующее приложение. Это может быть немного сложнее, если ваше приложение является службой Windows.
Process Explorer (был sysinternals, теперь принадлежит Microsoft) делает это. Это 32-разрядное приложение, которое обнаруживает 64-разрядную среду, записывает другой двоичный файл и удаляет его при выходе. http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
Простейшим подходом было бы обработать это установщиком - он будет иметь две версии каждого двоичного файла и копировать необходимые версии в зависимости от того, какая системная разрядность находится на целевой машине.