Autor Beitrag
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Di 22.03.16 17:48 
Ich bin der Meinung, dass man für meine aktuellen Programme kein Geld verlangen kann. Und ist der FTP-Server nicht kostenlos?

Ich musste vorher immer eine Version 1.1 als .exe uploaden. Meine User dann auch. Wenn ich die Software weiterentwickelt habe, musste ich Version 1.1 löschen und 1.2 hochladen. Dann müssen meine User wieder die andere .exe downloaden und die andere löschen.
Das wirkt auf micht nicht sehr professionell und ich denke, damit ruiniere ich meinen Ruf, wenn die User immer so einen Weg gehen müssen, um auf dem neuesten Stand meiner Software zu sein.

Zitat:
Ich habe für solche Zwecke immer gerne ClickOnce benutzt. Man muss nichts extra herunterladen und kann alles über Visual Studio regeln lassen.


Also habe ich mich über ClickOnce informiert. Es gibt ja dort 3 Wege. Über eine CD, über eine Website oder über Website.
Auf YouTube habe ich gefunden, wie er den Pfad in VS eingibt aber statt C: hat er \localhost eingegeben, Dies habe ich auch gemacht, aber es funktionierte nicht.

Letzendlich bin ich auf der Suche nach einer Lösung, wie man eine bestehende Version einfach upgraden kann, ohne solchen Aufwand wie oben genannt zu betreiben.

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 22.03.16 18:05 
Zitat:
Ich bin der Meinung, dass man für meine aktuellen Programme kein Geld verlangen kann. Und ist der FTP-Server nicht kostenlos?


Ein Server braucht Strom und Stellfläche warum solltem man dir das kostenlos anbieten? Werbung ist das Geschäftsmodel dieser Hoster und Ftp würde es umgehen. Aber wie gesagt ob es sowas wie Ftp gibt solltest du deinen Hoster fragen.

Zitat:
Das wirkt auf micht nicht sehr professionell und ich denke, damit ruiniere ich meinen Ruf, wenn die User immer so einen Weg gehen müssen, um auf dem neuesten Stand meiner Software zu sein.


Ohne Kosten (hier bezogen auf dich nicht dein ~Kunden~) professionell wirken ist grundsätzlich schwierig.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Di 22.03.16 18:14 
Okay. Ich merkt schon, es wird schwierig mit dem automatischen Updaten. Bei dem Server musste ich aber keine Bankverbindungen usw angeben. Keine Ahnung, dann bleibt es halt bei der anderen Methode :(

Zitat:
Ohne Kosten (hier bezogen auf dich nicht dein ~Kunden~) professionell wirken ist grundsätzlich schwierig.

Ich verstehe schon die Grundlage dieses Satzes. Mit professionell meine ich meine Programme/Website.

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 23.03.16 11:23 
Wenn du eine EXE hochladen kannst, kannst du dann auch eine Textdatei hochladen?
Dann könntest du darin die aktuelle Versionsnummer deines (zuletzt hochgeladenen) Programms abspeichern und der Client (d.h. dein Programm selbst) würde dann diese Textdatei herunterladen und die Version vergleichen. Und dann den Anwender über das Update informieren und/oder die neue Programmversion herunterladen.

Also genau das, was in dem bereits verlinkten Application Auto-update via Online Files in C# beschrieben ist...
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Mi 23.03.16 14:10 
Die Textdatei hochladen iszt kein Problem.

Zitat:
Also genau das, was in dem bereits verlinkten Application Auto-update via Online Files in C# beschrieben ist...


Hab ich schon versucht. Ich habe ja einen Account bei Mediafire. Brauch man für die Anwendung von ihrem Link nicht einen FTP-Server?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 23.03.16 14:23 
Zitat:
Brauch man für die Anwendung von ihrem Link nicht einen FTP-Server?


Nein. Wenn du dir den Screenshot dort anschaust steht da vor der url http nicht ftp ;)
Das Problem bleibt aber das gleiche. Dein Hoster muß den direkten Zugriff via diesem Protokol erlauben. Egal ob http oder ftp.

Soweit ich die AGB von MediaFire verstehe ist das nicht erlaubt/möglich. Habe aber weder Erfahrung mit Mediafire noch irgendwas ausprobiert. Ob du das darfst würde ich weiterhin am ehesten den Hoster selbst fragen.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Sa 16.04.16 10:56 
Also ich habe nun eine andere Methode gefunden. Über den WebClient die Anwendung zu downloaden:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
private void button2_Click(object sender, EventArgs e)
        {
            WebClient webclient = new WebClient();
            Uri uri = new Uri(this.textBox1.Text);
            webclient.DownloadFileCompleted += new AsyncCompletedEventHandler(DownLoadCompleted);
            webclient.DownloadFileAsync(uri, "MaiLet.exe");
        }

        private void DownLoadCompleted(object sender, AsyncCompletedEventArgs e)
        {
            MessageBox.Show("Erfolg");
        }


Die Anwendung wird zwar in dem Ordner mir 95kb angezeigt. Wenn ich diese Datei aber öffnen möchte, dann steht dort, diese App kann auf meinem PC nicht ausgeführt werden. Woran liegt es nun?

Der Downloadlink: www.mediafire.com/do...huldenverwaltung.exe

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 16.04.16 11:39 
Dein Downloadlink verweist auf eine Webseite, also wird es wohl die sein, die Du herunterlädst. Dein Programm ist ja auch keine 95kb groß.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Di 19.04.16 14:20 
Zitat:
Dein Downloadlink verweist auf eine Webseite, also wird es wohl die sein, die Du herunterlädst. Dein Programm ist ja auch keine 95kb groß.


Das war es. Ich habe nun auf meiner Website Dateien, die ich über den WebClient automatisch downloaden kann. Was gerade perfekt funktioniert ist der Impuls an den User, dass ein neues Update verfügbar ist.
Wenn der User dieses Update installieren möchte, wird auch die neue .exe heruntergeladen. Hier ist das Problem: die heruntergeladene Anwendung hat den selben Namen wie die Anwendung, die gerade läuft. Wie funktioniert es, dass die neue Version automatisch installiert wird und der User nichts machen muss?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 19.04.16 14:58 
Hallo,

da wirst Du über eine separate Anwendung gehen müssen, nennen wir sie "Updater".

Der Vorgang wäre dann so:
  1. Deine Hauptanwendung lädt die neue Version herunter (unter anderem Namen, sie kann sich ja nicht selbst überschreiben).
  2. Dann startet Deine Hauptanwendung die Updater-Anwendung und beendet sich selbst (so lange sie läuft, kann sie nicht aktualisiert werden).
  3. Die Updater-Anwendung wartet, bis Deine Hauptanwendung sich beendet hat (Prozessliste überwachen!) und überschreibt dann die alte Hauptanwendung mit der heruntergeladenen Datei.
  4. Dann startet Dein Updater wieder die (nun aktualisierte) Hauptanwendung und beendet sich selbst.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 19.04.16 15:53 
Oder deine Anwendung lädt den Installer runter wenn der Installer komplett herunter geladen ist wird dieser von der Anwendung gestartet und deine Anwendung beendet sich.

Der Installer sollte so geschrieben sein das es damit umgehen kann sollte also eins oder mehrere der folgenden Dinge tun
- prüfen das die Anwendung auch beendet ist bevor es fortsetzt
- oder die Anwendung abschießen falls die noch läuft
- oder den Start des eigentlichen Installers soweit verzögern das die Anwendung auch garantiert beendet ist. Also z.B. durch einen Begrüßungsbildschirm oder Userinteraktion
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Di 19.04.16 16:07 
Also ich habe jetzt folgenden Code zusammengebastelt.
Auf der Hauptanwendung im Load Event:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
try
                    {
                        WebClient web = new WebClient();
                        Uri uri = new Uri(@"http://mailet-software.weebly.com/uploads/7/2/0/5/72054763/webstudio_version.txt");

                        web.DownloadFile(uri, "Version.txt");

                        string newVersion = null;
                        string currentVersion = null;

                        using (StreamReader reader = new StreamReader(Path.Combine(Application.StartupPath, "CurrentVersion.txt")))
                        {
                            currentVersion = reader.ReadToEnd();
                            reader.Close();
                        }
                        using (StreamReader reader = new StreamReader(Path.Combine(Application.StartupPath, "Version.txt")))
                        {
                            newVersion = reader.ReadToEnd();
                            reader.Close();
                        }

                        if (newVersion != currentVersion)
                        {
                            Uri description = new Uri(@"http://mailet-software.weebly.com/uploads/7/2/0/5/72054763/webstudio_beschreibung.txt");
                            WebClient client = new WebClient();
                            client.DownloadFile(description, "Beschreibung.txt");
                            string _description = "";
                            using (var file = new StreamReader(Path.Combine(Application.StartupPath, "Beschreibung.txt")))
                            {
                                _description = file.ReadToEnd();
                                file.Close();
                            }

                            Updater updater = new Updater(newVersion, _description);
                            updater.ShowDialog();
                        }


Der Updater:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
try
            {
                var url = new Uri(@"http://mailet-software.weebly.com/uploads/7/2/0/5/72054763/mailet_webstudio_2016.exe");
                var newUrl = new Uri(@"http://mailet-software.weebly.com/uploads/7/2/0/5/72054763/webstudio_version.txt");
                var client = new WebClient();

                File.Delete(Path.Combine(Application.StartupPath, "MaiLet Webstudio 2016.exe"));
                client.DownloadFile(url, "MaiLet Webstudio 2016.exe");
                client.DownloadFile(newUrl, "CurrentVersion.txt");

                System.Diagnostics.Process.Start(Path.Combine(Application.StartupPath, "MaiLet Webstudio 2016.exe"));
                Application.Exit();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


Das funktioniert. Aber wenn die Hauptanwendung gestartet wird, wir das Fenster angezeigt, dass den User mitteilt, dass es ein neues Update gibt. Was mich hier wundert ist, dass die WinForm nach dem ALTEN Layout programmiert ist, obwohl ich in den ZIP die neue .exe der Hauptanwendung gepackt habe.

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Di 19.04.16 16:32 
Ich habe vergessen, die neue Anwendung auf den Server zu laden :rofl: :rofl: :rofl: :rofl:
Naja jetzt funktioniert es :)

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein