Как распространять приложения C# на компьютеры с неизвестной версией .Net?

Я написал небольшое приложение, которое мне нужно распространить на более чем 700 компьютеров, проблема в том, что компьютеры могут работать под управлением любой версии Windows (хотя, скорее всего, XP или лучше) с любой версией .Net framework, установленной с подключением к Интернету, все из OC3 дозвониться.

Я думал о том, чтобы связать .Net с моим приложением, но установщик .net занимает не менее 39 МБ, и это буквально заняло бы часы для кого-то с коммутируемым доступом.

Итак, есть ли способ либо связать определенные библиотеки DLL, которые нужны приложению, либо преобразовать все это в собственный код?

Спасибо -- Майк


person edude05    schedule 21.06.2010    source источник
comment
После прочтения комментариев и проведения дополнительных исследований, действительно нет решения этой проблемы, кроме как ориентироваться на самую низкую версию .net, которую вы можете.   -  person edude05    schedule 22.02.2011


Ответы (5)


Используйте установщик.

Microsoft предоставляет базовое решение, позволяющее проверить наличие зависимостей (и установить их, если они отсутствуют), чтобы убедиться, что компьютер, на котором развертывается ваше приложение, соответствует минимальным требованиям Framework (и зависимостей) для вашего приложения.

Если вам нужно что-то более сложное, вы можете использовать что-то вроде системы установки Nullsoft Scriptable Install System, InstallAware или InstallShield.

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

Если вы хотите удалить зависимость от .NET Framework, вам придется переписать свое приложение так, чтобы оно компилировалось в собственный код (даже NGEN не будет работать без установленного Framework).

person Justin Niessner    schedule 21.06.2010
comment
Это, однако, не помешает клиентам загрузить большую структуру, если у них ее нет. - person František Žiačik; 21.06.2010
comment
Для процента пользователей, которые (а) используют коммутируемый доступ (всего 10% всех пользователей в США), (б) уже не имеют фреймворка и (в) не имеют других способов получить фреймворк. - person Joe; 21.06.2010
comment
На самом деле у вас нет установки фреймворка, вы можете просто включить dll в установку, если вы установите для параметра Copy local значение true для всех необходимых dll, а затем упакуйте их в установку. - person msarchet; 21.06.2010
comment
@msarchet: это неправильно. Платформа должна быть установлена ​​для запуска приложения .NET. Боюсь, полное развертывание XCOPY приложения .NET (что означает отсутствие необходимости присутствия фреймворка на целевой машине) невозможно на 100%. - person Adam Robinson; 21.06.2010
comment
@msarchet: Это смешно. Это как сказать, что для постройки дома не нужен фундамент! - person SoftwareGeek; 01.07.2010

Сделать это можно, но не простым и не дешевым способом.

Например, см. http://www.remotesoft.com/.

person František Žiačik    schedule 21.06.2010

Если у них нет нужной вам среды выполнения, вам не повезло с решением .Net. С помощью установщика вы можете установить соответствующую среду выполнения, если ее там нет.

На самом деле, если вы абсолютно обеспокоены тем, что люди скачивают часть фреймворка, лучше всего не использовать его. Прежде чем переписывать приложение в нативном коде, я бы действительно посмотрел на вашу аудиторию, чтобы увидеть, насколько вероятно, что у них его нет, и какова их скорость соединения.

Если вы не хотите писать его в нативном коде, другой вариант — использовать более низкую версию фреймворка. Проникновение на рынок будет намного больше для 1.1, чем, скажем, для 4.0.

person kemiller2002    schedule 21.06.2010
comment
Незначительный момент, я не уверен, что 1.1 будет хорошим вариантом, я думаю, что он не установлен в более новых версиях Windows, поэтому, если кто-то выбрал наиболее распространенную версию .Net, им, вероятно, следует исследовать 1.1 против 2.0 в своих пользовательская база. - person Hans Olsson; 21.06.2010

Из Википедии (не абсолютный авторитет, но обычно надежный в таких вещах):

Windows Vista включает версию 3.0 платформы .NET Framework.

Таким образом, Windows 7 также будет включать это.

Таким образом, вам действительно нужно беспокоиться только о ваших клиентах XP.

Недавно мне пришлось переустановить Windows XP, и к тому времени, когда я получил SP3 и все последующие исправления, у меня также был установлен .NET 3.5. Хотя, поскольку я также устанавливал Visual Studio, я не могу дать вам 100% гарантию, что у всех будет установлена ​​необходимая версия .NET, но это будет значительная доля, так что вы можете излишне волноваться.

person ChrisF    schedule 21.06.2010

Не используйте .NET. Если у вас нет контроля над средой, вам нужно широкое распространение и вы не хотите загружать 30 МБ, то вы в значительной степени застряли с использованием собственного кода. Лучше всего будет С++.

В качестве альтернативы, как предлагали другие, вы можете попробовать использовать что-то вроде Remotesoft.

person Scott Wisniewski    schedule 01.07.2010