2009-12-22 2 views
4

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

Спасибо, eWolf

+0

Не использует .NET вариант? –

+0

@ Lasse: Нет, потому что он нуждается в распространении. @ Все: Спасибо за ответы! Я начну изучать C++ сейчас. У меня есть большая толстая книга передо мной, которая также должна быть для начинающих, но в первой главе она уже использует тонны экспрессий, которые я понимаю, потому что я уже могу развить с C# и PHP ..: D – eWolf

ответ

7

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

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

+0

+1, даже если мой живот болит сейчас. –

+0

Так что C++ не нуждается в распространении? Недавно на моем компьютере было установлено программное обеспечение «Microsoft Visual C++ Redistributable». Когда вам нужен этот компонент? – eWolf

+0

Вам это нужно при программировании на C++ CLI, AKA «управляемый C++», который является языком C++ на языке Microsoft, который на самом деле является гибридом между C++ и C#. –

4

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

Есть также решения, которые automate linking/packaging из .net продуктов, так что вам не нужно грузить любые распространяемые и т.д.

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

+0

Возможно, он имеет в виду старые, как в Win9x или Windows 2000, где присутствие .NET не гарантируется вообще. – Rob

+0

Наверное, но он отметил вопрос с .net и распространяемым. Поэтому мы говорим о платформах, имеющих доступную поддержку .net. –

+0

Если я разрабатываю для .NET, то для самой новой версии. Это не очень помогает мне, если .NET 1.1 доступен ... – eWolf

1

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

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

+0

Это звучит интересно. Какую среду вы бы рекомендовали для C++? Должен ли я использовать Visual C++ или gcc? Существует ли какой-либо конструктор форм? – eWolf

+0

Я также нашел интересный инструментарий SmartWin ++, хотя его развитие остановилось несколько лет назад. –

+1

Если вы выберете WTL, используйте Visual Studio. Если вы идете на Qt, то у них есть превосходная C++ IDE (в комплекте с редактором форм) под названием Qt Creator. – Rob

2

Edit: Как eWolf отметил, что он не нужен .NET, несмотря на оригинал вопрос помечен как .NET.

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

  • Установите .NET выполнения вручную или
  • Использовать пользовательский скрипт инсталлятора, который может обнаружить, если установлен .NET во время выполнения или нет, для установки среды исполнения .NET распространяемого ,

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

+0

Нет. Я не хочу создавать приложение с использованием .NET, так как для этого требуется время выполнения - чего я не хочу. Меня интересуют родные приложения. – eWolf

+0

@eWolf: Хорошо. Можете ли вы отредактировать теги соответственно, так как у вас есть это как .NET. Я также отредактирую свой ответ. – t0mm13b

+0

О, извините, я не хотел добавлять тег .NET .. исправил его. – eWolf

3

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

+0

Возможно, вы правы, но C++ - это язык, который, как правило, стоит изучить его. Наверняка это непросто, но, думаю, довольно быстро. – eWolf

+0

Если это всего лишь учебное упражнение, то, конечно, вы можете делать то, что вам нравится. Я сомневаюсь, что существует значительная разница в скорости между C++-приложением и приложением Delphi, хотя, поскольку Delphi позволяет вам приблизиться к голым металлам, как и C++. Разница заключается в времени разработки - графический интерфейс гораздо быстрее и проще разрабатывается в Delphi, чем в C++. – Graham

+0

Если вы намерены использовать C++, вы можете использовать C++ Builder, который является частью той же IDE (если вы покупаете продукт RAD Studio). Он также может создавать приложения без каких-либо распространяемых требований.(Однажды я выиграл ставку с сетевым администратором о написании приложения Windows, которое будет запускаться с дискеты 1,44 МБ без установки и получения информации через WinAPI с его сервера сервера базы данных, я сделал это с помощью Delphi 2 и собрал на ставку. ) –