Najlepszy sposób na wdrożenie aplikacji Visual Studio, która może działać bez instalowania

80

Napisałem dość prostą aplikację w C # / .NET i nie mogę znaleźć dobrego sposobu jej opublikowania. Jest to rodzaj „narzędzia”, które użytkownicy uruchamiają tylko raz lub co kilka miesięcy. W związku z tym mam nadzieję, że istnieje sposób, w jaki mógłbym go wdrożyć tam, gdzie nie musiałby być instalowany do uruchomienia (można go po prostu uruchomić, klikając dwukrotnie plik EXE bezpośrednio po pobraniu).

Jednak nadal potrzebuje (w jakiś sposób) zawierać poprawną wersję .NET, bibliotek itp., Aby działał poprawnie. Wiem, że jest to uwzględnione podczas korzystania z ClickOnce, ale to nadal instaluje aplikację na komputerze użytkownika.

Czy można to zrobić?

EDYCJA - \ bin \ Debug

myAppName.application
myAppName.exe
myAppName.exe.config
myAppName.exe.manifest
myAppName.pdb
myAppName.vshost.application
myAppName.vshost.exe
myAppName.vshost.exe.config
myAppName.vshost.exe.manifest
extraLibrary.dll

a także dwa foldery

app.publish
Resources
Wilson
źródło

Odpowiedzi:

106

Jest to możliwe i zwodniczo łatwe:

  1. „Opublikuj” aplikację (powiedzmy do jakiegoś folderu na dysku C), albo z menu Buduj, albo z właściwości projektu → Opublikuj . Spowoduje to utworzenie instalatora dla aplikacji ClickOnce .
  2. Ale zamiast używania produkowanego instalatora , znaleźć produkowanych plików (plik EXE i .config , manifest i .application plików, wraz z plików DLL, etc.) - wszystkie one są w tym samym folderze, a zazwyczaj w bin\Debugfolder poniżej pliku projektu ( .csproj ).
  3. Spakuj ten folder (pomiń wszelkie pliki * .vhost. * I app.publishfolder (nie są potrzebne) oraz pliki .pdb, chyba że przewidujesz debugowanie bezpośrednio w systemie użytkownika (na przykład zdalnie)) i udostępnij je użytkownikom.

Dodatkową zaletą jest to, że jako aplikacja ClickOnce nie wymaga uprawnień administratora do uruchomienia (jeśli aplikacja postępuje zgodnie ze zwykłymi wytycznymi dotyczącymi folderów używanych do przechowywania danych aplikacji itp.).

Jeśli chodzi o .NET, możesz sprawdzić, czy w aplikacji jest zainstalowana (lub w ogóle) minimalna wymagana wersja .NET (większość użytkowników już ją zainstaluje) i wyświetlić okno dialogowe z linkiem do strony pobierania na stronie Microsoft (lub wskaż jedną ze swoich stron, która może przekierowywać na stronę Microsoft - dzięki temu będzie bardziej niezawodna, jeśli zmieni się adres URL firmy Microsoft). Ponieważ jest to małe narzędzie, możesz obrać za cel .NET 2.0, aby zmniejszyć prawdopodobieństwo, że użytkownik będzie musiał zainstalować .NET.

To działa. Używamy tej metody podczas programowania i testowania, aby uniknąć konieczności ciągłego odinstalowywania i instalowania aplikacji i wciąż być bardzo blisko tego, jak będzie działać ostateczna aplikacja.

Peter Mortensen
źródło
2
Dzięki, działa jak marzenie! Musiałem użyć przycisku „Pliki aplikacji ...” we właściwościach publikowania mojego projektu, aby wymusić uwzględnienie wszystkich przywoływanych bibliotek DLL, ponieważ domyślnie nie są uwzględniane wszystkie odwołania.
JulienVan
43
Z ciekawości, czym to się różni od kopiowania plików prosto z \ bin \ Release?
Eric Eskildsen
10
Chciałbym również wiedzieć, czym różni się to od kopiowania plików bezpośrednio z \ bin \ Release?
CoDeGiRl
1
naprawdę świetna odpowiedź, skopiowałem wszystkie wymienione pliki z Application Fileszakładki publikowania i .application, .manifest, .config, .exe and other dlls... dziękuję za drugi punkt w Twojej odpowiedzi :) ..
Mohammed Sufian
3
Nie różni się to niczym od zwykłego budowania projektu i pobierania plików z folderu bin (Debug lub Release). Uruchomienie kreatora publikowania w celu utworzenia nieużywanego instalatora powoduje po prostu ponowne zbudowanie projektu, tak samo jak kliknięcie „Buduj”. Krótszą odpowiedzią byłoby po prostu upewnić się, że projekt jest kompilowany, a następnie przejść do folderu bin projektu i skopiować pliki (lub spakować je w celu łatwego kopiowania) do lokalizacji, z której chcesz uruchomić program. Nadal musisz się upewnić, że na komputerze użytkownika jest zainstalowana poprawna wersja .Net. Musi tylko pasować do wersji, w której jest wbudowana Twoja aplikacja.
Jeff Blenman,
2

Najpierw musisz opublikować plik przez:

  1. BUDUJ -> OPUBLIKUJ lub klikając prawym przyciskiem myszy projekt w Eksploratorze rozwiązań -> właściwości -> publikuj lub wybierz projekt w Eksploratorze rozwiązań i naciśnij Alt+ Enter UWAGA: jeśli używasz Visual Studio 2013 to we właściwościach musisz przejść do BUDUJ i wtedy musisz wyłącz zdefiniuj stałą DEBUG i zdefiniuj stałą TRACE i jesteś gotowy do pracy. Reprezentacja

  2. Zapisz plik w określonym folderze. Znajdź utworzone pliki (plik EXE oraz pliki .config, .manifest i .application, wraz z wszelkimi plikami DLL itp.) - wszystkie znajdują się w tym samym folderze i zazwyczaj w bin\Debugfolderze poniżej pliku projektu (.csproj ). W programie Visual Studio znajdują się one w folderze Application Files, w którym potrzebne są tylko pliki .exe i dll. (Musisz usunąć ClickOnce i inne pliki, a następnie uczynić ten folder plikiem zip i rozpowszechnić go.)

UWAGA: Aplikacja ClickOnce instaluje projekt w systemie, ale ma jedną zaletę. NIE potrzebujesz tutaj uprawnień administratora do uruchomienia (jeśli Twoja aplikacja postępuje zgodnie ze zwykłymi wytycznymi dotyczącymi folderów, które mają być używane do przechowywania danych aplikacji itp.).

abe312
źródło
2
Dlaczego musisz ustawić DEBUG i TRACE na określone wartości?
Peter Mortensen
Możesz mieć włączony atrybut warunkowy Śledzenie lub Debugowanie dla kompilacji, oba lub żadne z nich. Tak więc istnieją cztery typy kompilacji: debugowanie, śledzenie, oba lub żadne. Niektóre kompilacje wydania do wdrożenia produkcyjnego mogą nie zawierać żadnego z nich; większość kompilacji do debugowania zawiera oba. .................................................. ................................. msdn.microsoft.com/en-us/library/aa983575(v=vs .71) .aspx ............................................. .................................................. ..... msdn.microsoft.com/en-IN/library/ms164714.aspx
abe312
1
Pomoc zawsze będzie udzielona na stackoverflow tym, którzy o to proszą;) powiedz mi, której części nie zrozumiałeś? Po kilku badaniach wykonałem działającą aplikację moją metodą. Korzystałem z programu Visual Studio 2013
abe312,
1
Nie widzę niczego o nazwie „Opublikuj” w VS2015
UuDdLrLrSs
1
Zarówno Visual Studio 2008, jak i Visual Studio 2017 mają opcję „Publikuj <nazwa projektu>” w menu „Kompiluj” (być może w Studio 2015 zostało pominięte?). W każdym razie można to również zrobić z właściwości projektu, „Opublikuj” → „Opublikuj teraz” (jak na zrzucie ekranu tutaj).
Peter Mortensen