Der beste Weg, um eine Visual Studio-Anwendung bereitzustellen, die ohne Installation ausgeführt werden kann

80

Ich habe eine ziemlich einfache Anwendung mit C # /. NET geschrieben und kann keinen guten Weg finden, sie zu veröffentlichen. Es ist eine Art "Tool", das Benutzer nur einmal oder alle paar Monate ausführen würden. Aus diesem Grund hoffe ich, dass es eine Möglichkeit gibt, es dort bereitzustellen, wo es nicht installiert werden muss (es kann einfach durch Doppelklicken auf eine EXE-Datei direkt nach dem Herunterladen ausgeführt werden).

Es muss jedoch (irgendwie) immer noch die richtige Version von .NET, Bibliotheken usw. enthalten, damit es korrekt ausgeführt wird. Ich weiß, dass dies bei der Verwendung von ClickOnce enthalten ist, aber dadurch wird die Anwendung weiterhin auf dem Computer des Benutzers installiert.

Gibt es eine Möglichkeit, dies zu tun?

EDIT - \ 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

sowie zwei Ordner

app.publish
Resources
Wilson
quelle

Antworten:

106

Es ist möglich und täuschend einfach:

  1. Veröffentlichen Sie die Anwendung (z. B. in einem Ordner auf Laufwerk C) entweder über das Menü Erstellen oder über die Projekteigenschaften → Veröffentlichen . Dadurch wird ein Installationsprogramm für eine ClickOnce- Anwendung erstellt.
  2. Aber stattdessen die erzeugen Installer verwenden , finden die erzeugten Dateien (die EXE - Datei und die .config , manifest , und .application Dateien zusammen mit allen DLL - Dateien, etc.) - sie alle im selben Ordner sind und in der Regel in der bin\DebugOrdner unter der Projektdatei ( .csproj ).
  3. Komprimieren Sie diesen Ordner (lassen Sie alle * .vhost. * -Dateien und den app.publishOrdner (sie werden nicht benötigt) sowie die .pdb-Dateien weg, es sei denn, Sie sehen ein Debuggen direkt auf dem System Ihres Benutzers vor (z. B. per Fernbedienung)) und stellen Sie ihn bereit an die Benutzer.

Ein zusätzlicher Vorteil besteht darin, dass für die Ausführung als ClickOnce-Anwendung keine Administratorrechte erforderlich sind (wenn Ihre Anwendung den normalen Richtlinien für die Verwendung von Ordnern für Anwendungsdaten usw. entspricht).

In Bezug auf .NET können Sie überprüfen, ob in der Anwendung (oder überhaupt) die erforderliche Mindestversion von .NET installiert ist (die meisten Benutzer haben es bereits installiert), und einen Dialog mit einem Link zur Download-Seite auf der Microsoft-Website anzeigen (oder zeigen Sie auf eine Ihrer Seiten, die zur Microsoft-Seite umleiten könnten - dies macht sie robuster, wenn sich die Microsoft-URL ändert). Da es sich um ein kleines Dienstprogramm handelt, können Sie auf .NET 2.0 abzielen, um die Wahrscheinlichkeit zu verringern, dass ein Benutzer .NET installieren muss.

Es klappt. Wir verwenden diese Methode während der Entwicklung und des Tests, um zu vermeiden, dass die Anwendung ständig deinstalliert und installiert werden muss und immer noch ziemlich nah an der Ausführung der endgültigen Anwendung ist.

Peter Mortensen
quelle
2
Danke, es funktioniert wie ein Zauber! Ich musste die Schaltfläche "Anwendungsdateien ..." der Eigenschaften "Veröffentlichen" meines Projekts verwenden, um das Einbeziehen aller referenzierten DLLs zu erzwingen, da nicht alle Verweise standardmäßig enthalten sind.
JulienVan
43
Wie unterscheidet sich dies aus Neugier vom direkten Kopieren der Dateien aus \ bin \ Release?
Eric Eskildsen
10
Ich möchte auch wissen, wie sich dies vom Kopieren der Dateien direkt aus \ bin \ Release unterscheidet.
CoDeGiRl
1
wirklich tolle Antwort, ich habe alle aufgelisteten Dateien von Application Filesder Registerkarte "Veröffentlichen" kopiert und .application, .manifest, .config, .exe and other dlls.. danke Sir für den 2. Punkt in Ihrer Antwort :) ..
Mohammed Sufian
3
Dies unterscheidet sich nicht davon, nur das Projekt zu erstellen und die Dateien aus dem Ordner bin (Debug oder Release) abzurufen. Wenn Sie den Veröffentlichungsassistenten ausführen, um ein nicht verwendetes Installationsprogramm zu erstellen, wird das Projekt erneut erstellt, genauso wie Sie auf "Erstellen" klicken. Eine kürzere Antwort wäre nur, sicherzustellen, dass das Projekt erstellt wird. Gehen Sie dann zum Ordner bin des Projekts und kopieren Sie die Dateien (oder komprimieren Sie sie zum einfachen Kopieren) an den Speicherort, an dem Sie das Programm ausführen möchten. Sie müssen weiterhin sicherstellen, dass die richtige .NET-Version auf dem Computer des Benutzers installiert ist. Es muss nur mit der Version übereinstimmen, in die Ihre Anwendung eingebaut ist.
Jeff Blenman
2

Zuerst müssen Sie die Datei veröffentlichen durch:

  1. BUILD -> PUBLISH oder indem Sie mit der rechten Maustaste auf Project im Projektmappen-Explorer klicken -> Eigenschaften -> Projekt im Projektmappen-Explorer veröffentlichen oder auswählen und Alt+ drücken. Enter HINWEIS: Wenn Sie Visual Studio 2013 verwenden, müssen Sie in den Eigenschaften zu BUILD gehen und dann müssen Sie Deaktivieren Sie die DEBUG-Konstante definieren und die TRACE-Konstante definieren, und Sie können loslegen. Darstellung

  2. Speichern Sie Ihre Datei in einem bestimmten Ordner. Suchen Sie die erstellten Dateien (die EXE-Datei und die .config-, .manifest- und .application-Dateien sowie alle DLL-Dateien usw.) - sie befinden sich alle im selben Ordner und normalerweise im bin\DebugOrdner unter der Projektdatei (.csproj) ). In Visual Studio befinden sie sich im Ordner "Anwendungsdateien". In diesem Ordner benötigen Sie lediglich die EXE- und DLL-Dateien. (Sie müssen ClickOnce und andere Dateien löschen und diesen Ordner dann zu einer Zip-Datei machen und verteilen.)

ANMERKUNG: Die ClickOnce-Anwendung installiert das Projekt zwar auf dem System, hat jedoch einen Vorteil. Für die Ausführung sind hier KEINE Administratorrechte erforderlich (wenn Ihre Anwendung den normalen Richtlinien für die Verwendung von Ordnern für Anwendungsdaten usw. entspricht).

abe312
quelle
2
Warum müssen Sie DEBUG und TRACE auf bestimmte Werte setzen?
Peter Mortensen
Sie können entweder das bedingte Attribut Trace oder Debug für einen Build aktivieren oder beides oder keines von beiden. Daher gibt es vier Arten von Builds: Debug, Trace, beide oder keine. Einige Release-Builds für die Produktionsbereitstellung enthalten möglicherweise keine. Die meisten Debugging-Builds enthalten beides. .................................................. ................................. msdn.microsoft.com/en-us/library/aa983575(v=vs .71) .aspx ............................................. .................................................. ..... msdn.microsoft.com/en-IN/library/ms164714.aspx
abe312
1
Bei Stackoverflow wird immer Hilfe an diejenigen gegeben, die danach fragen;) Sag mir, welchen Teil hast du nicht verstanden? Nach ein wenig Recherche habe ich tatsächlich eine funktionierende Bewerbung über meine Methode gemacht. Ich benutzte Visual Studio 2013
abe312
1
Ich sehe nichts mit dem Namen "Publish" in VS2015
UuDdLrLrSs
1
Sowohl Visual Studio 2008 als auch Visual Studio 2017 haben das "Veröffentlichen <Projektname>" im Menü "Erstellen" (möglicherweise wurde es in Studio 2015 weggelassen?). In jedem Fall kann dies auch über die Projekteigenschaften "Veröffentlichen" → "Jetzt veröffentlichen" erfolgen (wie im Screenshot hier).
Peter Mortensen