Программирование для Windows без возможности распространения - PullRequest
5 голосов
/ 22 декабря 2009

Это может быть глупый вопрос, но все мои попытки Google это провалились. Вопрос заключается в следующем: как вы можете разрабатывать приложения для Windows, для которых не требуется предварительно распространяемый дистрибутив? Я хочу создавать приложения, которые также работают в более старых версиях Windows, в которых нет .NET Framework или чего-то подобного.

Спасибо, eWolf

Ответы [ 5 ]

7 голосов
/ 22 декабря 2009

Во-первых, программа на родном языке, таком как C ++, без CLR.

Во-вторых, отключите манифест и избегайте связывания внешних DLL (таких как STDC или MFC).

4 голосов
/ 22 декабря 2009

Что вы подразумеваете под старыми версиями Windows?
.NET Framework является частью Windows начиная с Windows 2003 и .net 1.1.
Поэтому, если вы ориентируетесь на версии Windows, более новые, чем Windows 2003, вы можете быть уверены, что .net доступен.

Существуют также решения, которые автоматизируют связывание / упаковку продуктов .net, так что вам не нужно отправлять какие-либо распространяемые файлы и т. Д.

Обновление:
Я только что узнал, что Mono позволяет вам связать всю среду выполнения с вашим исполняемым файлом.
Они называют эту функцию Bundle .
Подробнее об этом здесь .

3 голосов
/ 22 декабря 2009

Используйте Delphi - хотя в более новых версиях IDE есть некоторые странные ошибки, легко создавать собственные приложения Windows, которые не нуждаются в распространяемом. Гораздо проще в использовании, чем C ++ / win32.

2 голосов
/ 22 декабря 2009

Редактировать: Как указал eWolf, ему не нужен .NET, несмотря на оригинальный вопрос, помеченный как .NET.

Короче говоря, некоторые старые машины, такие как Win95 / 98/2000, могут не иметь установленной среды выполнения. Поскольку вы указали .NET, я предполагаю, что вы хотите создать приложение с использованием .NET, но это большое, но вам необходимо установить среду выполнения .NET, чтобы можно было запустить приложение .NET. Вы можете легко обойти это двумя способами:

  • Установите .NET runtime вручную ИЛИ
  • Используйте пользовательский сценарий установщика, который может определить, установлена ​​ли среда выполнения .NET или нет, для установки распространяемой среды выполнения .NET. 1012 *
    *

Если вы говорите о нативном приложении, таком как C / C ++, лучший путь (чтобы избежать зависимостей и минимизировать количество требуемых библиотек DLL) - это разработать его в сыром WinAPI32, используя только стандартные библиотеки DLL, которые много Windows машин будет иметь, COMMCTRL.DLL, USER32.DLL, ADVAPI.DLL и многие другие. Конечным результатом будет меньший исполняемый файл. Конечно, вы можете связать другие библиотеки DLL, статически связав их вместе, чтобы сформировать один большой мамонтовый исполняемый файл.

1 голос
/ 22 декабря 2009

Я рекомендую вам использовать WTL , который является облегченным C ++ фреймворком. Это всего лишь один шаг над Win32 API, поэтому вы получаете небольшие EXE-файлы с небольшим количеством зависимостей. WTL требуется инфраструктура ATL, с которой вы можете статически связываться, а это означает, что вам нужно только отправить свой EXE.

Другой фреймворк, на который стоит обратить внимание: Qt . Тем не менее, это требует, чтобы вы поставили некоторые DLL с вашим приложением. Qt - фантастический фреймворк, и я думаю, вы найдете его более продуктивным, чем WTL (конечно, в зависимости от потребностей вашего приложения).

...