• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

[Visual Studio 2019] Setup erstellen und Programmupdate?

Cyperfriend

Der ohne Avatar

Registriert
14 Juli 2013
Beiträge
1.123
Ich würde mein fertiges Programm gerne mit einer Setup.exe versehen. Visual Studio 2019 bietet da zwar eine Möglichkeit, aber so wie es scheint kann man da keine wirklichen Einstellungen festlegen. Konkret möchte ich, dass die Setup.exe alles alleine macht ohne, dass der Anwender eine Rückfrage bekommt.
- Ich möchte einen Pfad fest vorgeben. (In meinem Fall C:\Systeminfo) Visual Studio erstellt einen Installer wo das Programm irgendwo in AppData\<Kryptischer Pfad> reininstalliert wird.
- Der Installer erstellt keine saubere Setup.exe. Es werden daneben auch noch andere Dateien und Ordner erstellt, die gebraucht werden. Kopiert man die Setup.exe aus dem raus und führt sie alleine aus werden fehlende Dateien moniert. Ich will natürlich eine Setup.exe wo alles drin ist.
Anhang anzeigen 58480
- Das Programm soll sich in den Autostart eintragen, im Idealfall wäre es mir aber sogar lieber, wenn das Programm schon ausgeführt wird, bevor sich der Anwender überhaupt anmeldet, es also ausreicht, wenn der PC hochgefahren ist und der Login-Bildschirm da ist.

- Visual Studio 2019 bietet scheinbar die Möglichkeit das Programm nach Updates suchen zu lassen. Wie funktioniert das genau und was muss dabei beachtet werden? Ich möchte einen Updater, der im Hintergrund arbeitet und die Anwender gar nichts von mitbekommen. Die jeweils neuen Programmversionen werden auf unserem Webspace zur Verfügung gestellt.
Anhang anzeigen 58481
 
Zuletzt bearbeitet:

KaPiTN

♪♪♫ wild at heart ♪♫♫♪

Registriert
14 Juli 2013
Beiträge
29.138
Ich schlage vor, Du schaust mal nach dem Projekttyp 'Windows-Dienstprogramm'. Damit kannst Du Deine vorher als normales Programm ausgetestete Anwendung als Dienst anbieten. Wenn ich mich recht erinnere, ist länger her, kann ein Installer direkt mit im Projekt integrierte werden und es gibt eine Klasse dafür.

Als Dienst ist Deine Anwendung unabhängig vom Nutzerkontext, bedarf also keine Anmeldung.
mir aber sogar lieber, wenn das Programm schon ausgeführt wird, bevor sich der Anwender überhaupt anmeldet, es also ausreicht, wenn der PC hochgefahren ist und der Login-Bildschirm da ist.

Beim Update würde ich spontan auch auf einen weiteren Dienst setzen, der auf Updates prüft und gegebenenfalls

a) Deinen Ursprünglichen Dienst stoppt, die *.exe austauscht und dann den Dienst wieder startet.
oder
b) Deinen Ursprünglichen Dienst deinstalliert und einen aktualisierten installiert.

Detaillierter kann ich aus dem Stand keine Antwort geben.
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.771
Ort
in der Zukunft
Mit der Erweiterung solltest du einen .msi Setup erstellen können.
die meisten Setup.exe Installer entpacken nur eine setup.exe was das ganze im Grunde nur langsamer macht.
Alle anderen setup.exe sind eigentlich noch schlimmer da dann proprietäre Routinen verwendet werden die meist früher oder später ärger machen.

https://marketplace.visualstudio.co...nt.MicrosoftVisualStudio2017InstallerProjects

Unbeaufsichtigtes Starten ohne Anwender:
Wie von KapiTN richtig beschriebe ist dafür ein Dienst da.
Große Frage ist hier mit welchem Benutzer dieser läuft und welche Rechte deine Anwendung benötigt.
Läuft der Dienst mit allem über Benutzer-Rechten ist zu bedenken das der Dienst keine Angriffsfläche bieten darf (Tausch von Programm dlls, input-dateien oder ähnliches...) Manipulation über Schnittstellen die die Anwendung bietet usw. Da das sonst ein super Angriffsvektor darstellt.
Noch interessanter bei einen Update-Dienst der Daten aus dem Internet läd. Hier sollte alles was installiert wird über Zertifikate geprüft werden, sowohl Quelle als auch die Nutzdaten selber.

@Pfade, Autostart etc.
Wer ist denn der Kundenkreis der Anwendung? Ist das Firmenintern, Firmenkunden, Privatkunden, Öffentlich?

Gerade Die Kombination aus "Installer soll nichts anzeigen" und "Anwendung soll in Autostart + Pfad c:\Sysinfo" gefällt mir ehrlichgesagt gar nicht.

  1. c:\Sysinfo ist ohne extra Konfiguration ein unsicherer Ort der durch jeden beliebigen Benutzer frei geändert werden kann > In Kombination mit einem Dienst der dann evtl. mit Admin oder sogar System-Rechten läuft ist das definitiv nicht gut.
  2. Sollte jeder Kunde (Wenn eben nicht Firmen intern) die Freiheit haben die Anwendung da hin zu installieren wo er das gerne möchte. Davon abgesehen gibt es auch bei MS Standards wo so eine Anwendung liegen sollte. In deinem Fall wohl "C:\Program Files\Firmenname\Anwendungsname" z.B. als Admin sucht man ja durchaus auch mal nach den Dateien der Software und sucht dann an diesen Orten als erstes. Zum anderen haben die Vorgegeben Pfade passende Berechtigungen und werden bei Upgrades nach Inkompatibilitäten gescannt. Zusätzlich ist man ja nicht die einzige Software auf dem PC. Wenn jeder unter C:\ einen Ordner erstellt wird es dort sehr schnell sehr unübersichtlich.
  3. Auch der Autostart sollte optional sein - ebenso wie das Suchen nach Updates.


Du kannst ja gerne alles im Setup vorbelegen und bei weiter, weiter, fertig wird es so installiert wie du dir das vorstellst + bei einer Silent-Installation (Ohne jegliche Interaktion was MSI über msiexec /i deinemsi.msi /qn automatisch unterstützt) wird dann dein Standard ebenso verwendet.

Wenn die Optionen in Visual Studio nicht reichen kannst du
https://jrsoftware.org/isinfo.php als kostenfreie Software verwenden.
Je nach Zielgruppe wäre aber auch ein Professionelles Tool zu Empfehlen. Ebenso sollte die .msi dann signiert sein.
Hierbei kann ich theo. ebenfalls Tipps geben - aber da warte ich erst einmal auf deine Antwort in welche Richtung das gehen soll.
 

Cyperfriend

Der ohne Avatar

Registriert
14 Juli 2013
Beiträge
1.123
  • Thread Starter Thread Starter
  • #4
Also das Projekt ist intern (Ich bin der Admin), wobei wir 13 Dienststellen haben (Non-Profit Organisation). Nur in zwei der Dienststellen haben wir einen Server, in den anderen nicht. Also eine Bereitstellung auf einem internen Server scheidet aus.

Wenn das Programm fertig ist soll Systeminformationen sammeln und in eine Datenbank schreiben, bzw. aktualisieren, also nichts wovor man sich fürchten muss. Nutzeraktivitäten werden nicht aufgezeichnet. Anbei mal ein Screenshot wie das am ende vielleicht mal aussehen soll, wobei die GUI momentan nur dazu dienst mir anzuzeigen, ob die Informationen überhaupt gesammelt werden. Später wird das im Grunde nicht mehr gebraucht, weshalb das Tool auch unsichtbar ausgeführt wird und nach Senden der Daten auch beendet wird.

Die Updates möchte ich deswegen silent und vor allem automatisch, weil ich den Anwender damit nicht nerven will und die Updates auch zeitnah ausliefern will. Der Pfad C:\Systeminfo deswegen, weil der Benutzer da Schreibrechte hat und es bei einem Update keine Probleme geben sollte in Form der UAC oder so. Unter C:\Programme oder C:\Programme (x86) schlägt glaub die UAC Alarm.

Anhang anzeigen 58487

[src=csharp] // Programm unsichtbar ausführen
//this.WindowState = FormWindowState.Minimized;
//this.ShowInTaskbar = false;[/src]
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.771
Ort
in der Zukunft
Ok, wenn Intern dann streichen wir die Befürchtung den Optionen im Setup, der Rest bleibt aber ;)

Wenn du ein Programm mit erhöhten Rechten ausführst (oder reichen für all deine Infos Benutzerrechte?) dann sollte das Programm auch an einem Ort liegen der nur durch einen Admin geändert werden kann. Ebenso sollte darauf geachtet werden ob Punkte die die Anwendung einliest / als Input verwendet manipuliert werden können.
Der Benutzer soll das ja gerade nicht ändern können.
Natürlich schlägt die UAC in c\Programme an - da ist ja der Sinn :)

Wenn es beim Update Probleme gibt liegt das Problem wo anders ...

Wenn es eine Verbindung zu den Dienststellen gibt könntest du das auch schlicht durch Powershell-Remoting machen und nichts auf den Clients installieren.
Sonst - wie oben beschrieben eine .msi bauen und diese auf die Clients installieren. Wenn Active-Directory vorhanden geht das per Policy.
Wenn die Clients alle unter deiner Kontrolle sind kannst du dir auch einen Update-Dienst sparen.
 
Oben