Программирование для Windows без распространения
-
20-09-2019 - |
Вопрос
Возможно, это глупый вопрос, но все мои попытки найти его в Google не увенчались успехом.Вопрос в том:Как вы можете разрабатывать приложения Windows, которые не требуют предварительной установки распространяемого файла?Я хочу создавать приложения, которые будут работать и в более старых версиях Windows, в которых нет .NET Framework или чего-то подобного.
Спасибо, eWolf
Решение
Во -первых, программа на родном языке, такой как C ++, нет CLR.
Во -вторых, отключите манифест и избегайте связывания внешних DLL (например, STDC или MFC).
Другие советы
Что вы имеете в виду под более старыми версиями Windows?
Фреймворк .NET является частью Windows со времен Windows 2003 и .NET 1.1.
Так что, если вы нацеливаетесь на версии Windows более новой, чем Windows 2003, вы можете быть уверены, что .NET доступен.
Есть также решения, которые Автоматизация связывания/упаковки из продуктов .NET, чтобы вам не нужно было отправлять перераспределимые и т. Д.
Обновлять:
Я только что узнал, что Мононуклеоз Позволяет вам связать все время выполнения в ваш исполняемый файл.
Они называют эту функцию Пучок.
Подробнее об этом здесь.
Используйте Delphi - хотя новые версии IDE имеют некоторые странные ошибки, легко создать приложения для собственных Windows, которые не нуждаются в перераспределении. Гораздо проще в использовании, чем C ++/Win32.
Редактировать: Как отметил eWolf, ему не нужен .NET, несмотря на то, что исходный вопрос был помечен как .NET.
Короче говоря, на некоторых старых машинах, таких как Win95/98/2000, среда выполнения может не быть установлена.Поскольку вы указали .NET, я предполагаю, что вы хотите создать приложение с использованием .NET, но есть одно важное обстоятельство: вам необходимо заранее установить среду выполнения .NET, чтобы можно было выполнить приложение .NET.Это легко обойти двумя способами:
- Установите среду выполнения .NET вручную ИЛИ
Используйте пользовательский сценарий установщика, который может определить, установлена ли среда выполнения .NET, чтобы установить распространяемый компонент среды выполнения .NET.
Если вы говорите о собственном приложении, таком как C/C++, лучший путь (чтобы избежать зависимостей и минимизировать количество требуемых DLL) — разработать его в чистом WinAPI32, используя только стандартные DLL, которые есть на многих машинах с Windows. будет COMMCTRL.DLL, USER32.DLL, ADVAPI.DLL и это лишь некоторые из них.Конечным результатом будет исполняемый файл меньшего размера.Конечно, вы можете объединить другие DLL, статически связав их вместе, чтобы сформировать один огромный исполняемый файл.
Я рекомендую вам использовать Wtl, который является легкой структурой C ++. Это всего лишь один шаг выше API Win32, так что вы получаете маленьких бывших с небольшим количеством зависимостей. WTL требует платформы ATL, на которую вы можете статически ссылаться, что означает, что вам нужно только отправить свой EXE.
Еще одна структура, которую стоит посмотреть, - это QT. Анкет Тем не менее, это требует, чтобы вы отправили несколько DLL с вашим заявлением. QT - это фантастическая структура, и я думаю, что вы найдете его более продуктивным, чем WTL (в зависимости от потребностей вашего приложения, конечно.)