2010-06-21 17 views
5

Napisałem małą aplikację, którą muszę rozpowszechniać na ponad 700 komputerach. Problem polegał na tym, że na komputerach mogła działać dowolna wersja systemu Windows (choć najprawdopodobniej XP lub lepsza) z dowolną wersją platformy .Net instalowaną z połączeniami internetowymi. od OC3 do połączenia modemowego.Jak dystrybuować aplikacje w języku C# do komputerów z nieznaną wersją .Net?

Rozważałem dołączenie .Net do mojej aplikacji, ale instalator .net ma przynajmniej 39 MB i to dosłownie potrwa kilka godzin dla kogoś z modemem.

Czy istnieje sposób, w jaki mogę połączyć określone pliki DLL, których potrzebuje aplikacja, lub przekonwertować całość na kod natywny?

Dzięki --Mike

+0

Po przeczytaniu komentarzy i wykonaniu dalszych badań, tak naprawdę nie ma rozwiązania tego problemu, poza kierowaniem na najniższą wersję .net, którą można. – edude05

Odpowiedz

11

Użyj instalatora.

Firma Microsoft zapewnia podstawowe rozwiązanie umożliwiające sprawdzanie zależności (i instalowanie ich, jeśli ich brakuje), aby upewnić się, że komputer, na którym aplikacja jest wdrażana, spełnia minimalne wymagania dla aplikacji (i zależności).

Jeśli potrzebujesz czegoś bardziej złożonego, możesz użyć czegoś takiego jak Nullsoft Scriptable Install System, lub InstallShield.

Pamiętaj jednak, że jeśli tworzysz aplikację .NET, użytkownik będzie musiał zainstalować środowisko wykonawcze w taki czy inny sposób. Instalator sprawia, że ​​wszystko jest przyjemne, nie zmuszając do połączenia instalatora .NET z aplikacją. Pozwoli to użytkownikowi na pobranie środowiska wykonawczego .NET w czasie instalacji.

Jeśli chcesz usunąć zależność od .NET Framework, będziesz musiał przepisać swoją aplikację w coś, co kompiluje się do natywnego kodu (nawet NGEN nie będzie działać bez zainstalowanego Framework).

+0

Nie uniemożliwiłoby to jednak, aby klienci musieli pobrać dużą strukturę, jeśli jej nie mają. –

+0

Dla odsetka użytkowników, którzy (a) są w trybie dial-up (tylko 10% wszystkich użytkowników w USA), (b) nie mają już tego szkieletu i (c) nie mają innych możliwości uzyskania dostępu do frameworka . – Joe

+0

Naprawdę nie masz zainstalowanego frameworka, możesz po prostu dołączyć biblioteki DLL do instalacji, jeśli ustawisz Copy local na true we wszystkich potrzebnych bibliotekach dll, a następnie zapakuj je do instalacji – msarchet

0

Jeśli nie masz środowiska uruchomieniowego, którego potrzebujesz, to masz dużo szczęścia z rozwiązaniem .Net. Za pomocą instalatora możesz zainstalować odpowiednie środowisko uruchomieniowe, jeśli go tam nie ma.

Jeśli naprawdę martwisz się o ludzi pobierających część frameworka, najlepiej jest go nie używać. Przed ponownym napisaniem aplikacji w natywnym kodzie, naprawdę chciałbym spojrzeć na twoją widownię, aby zobaczyć, jak prawdopodobne jest to, że oni jej nie mają i jaka jest ich szybkość połączenia.

Jeśli nie chcesz pisać w natywnym kodzie, innym założeniem jest użycie niższej wersji frameworka. Penetracja rynku będzie znacznie większa dla 1,1 niż 4,0.

+1

Drobny punkt, nie jestem pewien, czy 1.1 byłby dobrym rozwiązaniem, myślę, że nie jest zainstalowany na nowszych wersjach systemu Windows, więc jeśli ktoś zszedł na dół przy użyciu najpowszechniejszej wersji .Net, prawdopodobnie powinien zbadać 1.1 vs 2.0 w ich baza użytkowników. –

0

Od Wikipedia (nie absolutna władza, ale zwykle niezawodny o tego typu rzeczy):

Windows Vista zawiera wersję 3.0 Framework.

W związku z tym system Windows 7 również to uwzględni.

W związku z tym to tylko twoi klienci XP muszą się martwić.

Niedawno musiałem ponownie zainstalować system Windows XP i do czasu, gdy miałem SP3 i wszystkie kolejne łatki, miałem zainstalowany .NET 3.5. Chociaż podczas instalacji Visual Studio również nie mogę dać 100% gwarancji, że każdy będzie miał wymaganą wersję.NET zainstalowany, ale będzie to znaczna część, więc możesz być niepokojąco niepotrzebnie.

0

Nie używaj .NET. Jeśli nie masz kontroli nad środowiskiem, potrzebujesz szerokiej dystrybucji i nie chcesz pobierać 30 MB, to prawie utkniesz przy użyciu natywnego kodu. Twój najlepszy zakład to C++.

Alternatywnie, jak sugerowali inni, możesz spróbować użyć czegoś takiego jak Remotesoft.