Forum: PC-Programmierung c# setup.exe


von Bob H. (Firma: hinter den 7 bergen) (bob128)


Angehängte Dateien:

Lesenswert?

Hi,

ich wollte mit "Microsoft Visual C# 2008 Express Edition" für mein 
kleines programm eine setup.exe erstellen bin dann auf erstellen=> 
projekt veröffentlichen gegangen und dann auf fertig stellen mit den 
default einstellungen als dieser fehler kam siehe screenshot. ich habe 
den pfad verfolgt und gemerkt das der ordner 'engine' gar nicht 
existiert in IDE. weiß jemand wo ich dieses file 'setup.bin' herbekomme? 
bin leider noch anfänger in c#

von Christian H. (chrikrocontroller)


Lesenswert?

Ich benutze Microsofts Visual Studio 2008 Professional. Das bekomme ich 
durch die Uni kostenlos.
Als ich vorher mit einer Express Edition versucht hatte eine Setup.exe 
zu erzeugen, hat das leider nicht geklappt.
Mit der Professional ist das allerdings kein Problem, da haste ein 
Template und damit erstellt er dir dann eine Setup.exe.
Ich denke, dass dein Fehler dadurch zu Stande kommt, dass er genau diese 
Setup-Basisdatei nicht finden kann, da er sie nur in der Professional 
besitzt.
Soweit ich weiß ist genau das eines der Unterschiede zwischen Express 
Edition (kostenlos) und Pro (kostenpflichtig).

Vielleicht hilft dir aber folgender Trick:
Du erzeugst als Projekt eine neue Consolen-Anwendung mit dem Namen 
"InstallExeManual". Dann klickst du im "Projektmappen-Explorer" mit 
rechts auf "InstallExeManual" und wählst dann ganz unten "Eigenschaften" 
aus. Hier wechselst du dann auf den Reiter "Ressourcen". Dort kannst du 
beliebige Dinge auswählen, die in deine Exe mit integriert werden. Du 
klickst also dann an der Stelle auf "Ressource hinzufügen" und stellst 
unten den Dateityp von "*.txt" auf "*.*" um. Jetzt wählst du deine 
Dateien aus, die du später irgendwohin haben willst (das passiert ja 
letztendlich in einer Setup-Datei auch). Nun kennt dein Programm diese 
Datei auch als Ressource und du kannst damit in deinem Code opperieren.

Wir wechseln also zu "Program.cs" und begeben uns in die "main()". Dort 
kannst du einfach mal folgende Zeilen Code eingeben:

   System.IO.BinaryWriter myWrite = new 
System.IO.BinaryWriter(System.IO.File.Open("C:\\Users\\DeinName\\Documen 
ts\\7zip.msi",  FileMode.Create));
   myWrite.Write(InstallExeManual.Properties.Resources._7z465);

Du musst natürlich noch den Pfad anpassen, und deine Ressource natürlich 
auch. Beim Einfügen von Ressource bekommt diese unter Umständen einen 
anderen Namen, über den auf die Ressource zugegriffen werden kann. 
Diesen solltest du dir merken. Ansonsten wird dir IntelliSense aber 
helfen, sobald du den Punkt nach "InstallExeManual.Properties.Resources" 
gesetzt hast. In meinem Fall habe ich mal die Setup.msi von 7-zip 
genommen. Daher auch der Name "_7z465". Was letztendlich passiert ist 
das folgende.
Deine Ressource hatte den Namen "7z465.msi". Beim hinzufügen zu den 
Ressourcen deines Programms hat Visual Studio dieser dann automatisch 
den Namen "_7z465" zugewiesen. Die Ressource ist einfach als byte-Array 
verfügbar. Deswegen brauchst du auch einen BinaryWriter. Diesen 
instanziierst du dir über einen Konstruktor, der einen Stream benötigt. 
Diesen bekommst du über die statische Methode "File.Open". Wichtig ist 
also an genau dieser Stelle, dass du erstens einen Pfad übergibst, der 
tatsächlich existiert, und auf den du auch Schreibrechte hast. Zweitens 
musst du "FileMode.Create" als weiteren Parameter übergeben, dass die 
Datei angelegt wird, wenn sie noch nicht existiert. Und du musst 
natürlich darauf achten, dass du bei dem Pfad die Datei mit der 
richtigen Erweiterung angibst. Da in meinem Beispiel die als Ressource 
hinzugefügte Datei die Erweiterung .msi hatte, musste ich auch in meinem 
Dateinamen am Ende ".msi" schreiben.

Am besten du probierst es mal aus, und wenn es funktioniert schreibst du 
dir eine Methode, der du nur den Namen einer Ressource und einen Pfad 
angeben musst. Diese kannst du dann dynamisch in der main() berechnen 
und übergeben. So bekommst du dann am Ende auch nur eine Exe und diese 
beinhaltet all deine Dateien, die du der Reihe nach an die korrekten 
Pfade schreibst.

Mit der Professional ist es zwar weitaus einfacher und vor allem viel 
einfacher, das es per Drag & Drop funktioniert, aber so sollte es 
wenigstens zu Ziel führen.

von Bob H. (Firma: hinter den 7 bergen) (bob128)


Lesenswert?

wie gesagt bin noch c# anfänger und was du da beschreibst ist mir viel 
zu aufwendig naja egal wenn es nur mit der kostenplfichtigen geht lass 
ich es einfach wäre zwar nett gewesen aber was solls

von Christian H. (chrikrocontroller)


Lesenswert?

Bob Hulu schrieb:
> wie gesagt bin noch c# anfänger und was du da beschreibst ist mir viel
> zu aufwendig

Naja, also wenn du es einfach Schritt für Schritt umsetzt, dann wirst du 
sehen, dass es gar nicht so schwer ist. Als ich damit angefangen hatte, 
habe ich es genau so gemacht und es ist wirklich sehr lehrreich, wenn 
man schon Code vor sich hat und dann ein bisschen damit spielen kann.

Wenn nicht gibt es auch noch andere Möglichkeiten Installations-Dateien 
automatisiert zu installieren. Musst nur mal googlen.

Ich habe grade http://www.brothersoft.com/install-wizard-3386.html 
gefunden. Ich habe das zwar nie ausprobiert, aber vielleicht hilft es 
dir ja. Klingt ganz interessant.

Viele Grüße,
Christian

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.