<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Hilfe für einen Autoupdate algorithmus.]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Programm und würde dies gerne mit einer Autoupdate Funktion versehen.<br />
Momentan besteht es aus einer exe Datei. Evtl werde ich aber das Herzstück<br />
(eine Klasse) in eine DLL Datei packen.</p>
<p>Ich hab mir jetzt schonmal ein paar gedanken gemacht, wie ich sowas realisiern<br />
könnte. Aber bevor ich jetzt ganz in die falsche richtung gehe, frag ich lieber.</p>
<p>Zur verfügung steht mir ein FTP Server. Also mein Webspace verfügt außerdem noch<br />
über eine MySQL Datenbank. Ich hatte mal eine E-Mail an den Support geschrieben<br />
und die meinten, ich könnte sie auch über ODBC ansprechen. Allerdings bin<br />
ich da überhaupt nicht fitt, deswegen wäre es gut, wenn es eine saubere<br />
lösung nur über FTP gäb.</p>
<p>Ich kann bisher:<br />
- Dateien vom FTP Server downloaden (über winapi, hab mir da ne klasse geschrieben)<br />
- Dateien auf der Festplatte hin und her schieben (teils winapi).<br />
- Dateiattribute auslesen (ebenfalls winapi <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> )<br />
- Programme ausführen (via ShellExecute(...) )</p>
<p>Wie würdet ihr da am besten vorgehen?</p>
<p>Evtl die aktuelle versionsnummer in einer binär oder txt datei auf dem Ftp Speichern.</p>
<p>Und dann beim Create Ereigness meines Programms so ewtwas schreiben:</p>
<pre><code class="language-cpp">wenn (Programmname = Update.exe)
{
   Kopiere &quot;Update.exe&quot; nach &quot;Projekt1.exe&quot;
}
sonst
{
   wenn(Update.exe im Ordner)
   {
      lösche Update.exe
   }
}

downloade Version.txt
öffne Version.txt
Prüfe Versionsnummer aus der txt zu deiner Versionsnummer (&lt;-z.B. Versinosnummer wäre dann durch define VERSIONSNUMMER gesetzt)
wenn (Versionsnummer aus txt größer)
{
   Downloade die Datei, die in der Version.txt steht
   Schiebe die in den Programm ordner
   Nenne die Datei Update.exe
   ShowMessage(&quot;Programm muss wegen update neugestartet werden&quot;)
   Führe Update.exe aus und schließe sofort Projekt1.exe
}
</code></pre>
<p>Ich find das ist ein bißchen gewurschtelt oder? also ich muss das zeug ja so hin<br />
und her kopieren, weil man ja ein Programm das läuft nicht ersetzten kann.<br />
Mir is gerade eingefallen, dass es evtl sogar noch besser wäre das ganze über<br />
einen http download zu machen. Weil das Passwort für den FTP server ja im<br />
quellcode stehen muss. (allerdings hab ich das mit http downloads noch nie<br />
programmiert).</p>
<p>Würd mich über ein paar vorschläge / diskussion freuen.</p>
<p>danke fürs lesen.</p>
<p>Gruß,<br />
d0x.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/158300/hilfe-für-einen-autoupdate-algorithmus</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 15:41:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/158300.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 Sep 2006 08:08:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hilfe für einen Autoupdate algorithmus. on Mon, 04 Sep 2006 08:09:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Programm und würde dies gerne mit einer Autoupdate Funktion versehen.<br />
Momentan besteht es aus einer exe Datei. Evtl werde ich aber das Herzstück<br />
(eine Klasse) in eine DLL Datei packen.</p>
<p>Ich hab mir jetzt schonmal ein paar gedanken gemacht, wie ich sowas realisiern<br />
könnte. Aber bevor ich jetzt ganz in die falsche richtung gehe, frag ich lieber.</p>
<p>Zur verfügung steht mir ein FTP Server. Also mein Webspace verfügt außerdem noch<br />
über eine MySQL Datenbank. Ich hatte mal eine E-Mail an den Support geschrieben<br />
und die meinten, ich könnte sie auch über ODBC ansprechen. Allerdings bin<br />
ich da überhaupt nicht fitt, deswegen wäre es gut, wenn es eine saubere<br />
lösung nur über FTP gäb.</p>
<p>Ich kann bisher:<br />
- Dateien vom FTP Server downloaden (über winapi, hab mir da ne klasse geschrieben)<br />
- Dateien auf der Festplatte hin und her schieben (teils winapi).<br />
- Dateiattribute auslesen (ebenfalls winapi <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> )<br />
- Programme ausführen (via ShellExecute(...) )</p>
<p>Wie würdet ihr da am besten vorgehen?</p>
<p>Evtl die aktuelle versionsnummer in einer binär oder txt datei auf dem Ftp Speichern.</p>
<p>Und dann beim Create Ereigness meines Programms so ewtwas schreiben:</p>
<pre><code class="language-cpp">wenn (Programmname = Update.exe)
{
   Kopiere &quot;Update.exe&quot; nach &quot;Projekt1.exe&quot;
}
sonst
{
   wenn(Update.exe im Ordner)
   {
      lösche Update.exe
   }
}

downloade Version.txt
öffne Version.txt
Prüfe Versionsnummer aus der txt zu deiner Versionsnummer (&lt;-z.B. Versinosnummer wäre dann durch define VERSIONSNUMMER gesetzt)
wenn (Versionsnummer aus txt größer)
{
   Downloade die Datei, die in der Version.txt steht
   Schiebe die in den Programm ordner
   Nenne die Datei Update.exe
   ShowMessage(&quot;Programm muss wegen update neugestartet werden&quot;)
   Führe Update.exe aus und schließe sofort Projekt1.exe
}
</code></pre>
<p>Ich find das ist ein bißchen gewurschtelt oder? also ich muss das zeug ja so hin<br />
und her kopieren, weil man ja ein Programm das läuft nicht ersetzten kann.<br />
Mir is gerade eingefallen, dass es evtl sogar noch besser wäre das ganze über<br />
einen http download zu machen. Weil das Passwort für den FTP server ja im<br />
quellcode stehen muss. (allerdings hab ich das mit http downloads noch nie<br />
programmiert).</p>
<p>Würd mich über ein paar vorschläge / diskussion freuen.</p>
<p>danke fürs lesen.</p>
<p>Gruß,<br />
d0x.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130557</guid><dc:creator><![CDATA[d0x]]></dc:creator><pubDate>Mon, 04 Sep 2006 08:09:43 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe für einen Autoupdate algorithmus. on Mon, 04 Sep 2006 10:16:09 GMT]]></title><description><![CDATA[<p>Find ich jetzt nicht, dass das &quot;gewurschtelt&quot;(Bayer?^^) ist und wirklich anders geht's auch nicht.<br />
Für wieviele Plätze soll dein Programm denn ausgelegt sein? Also wieviele Leute sollen das mal bekommen?<br />
Für einen einzelnen Platz würde es ausreichen wenn du die Update.exe nach dem erfolgreichen Download vom FTP löscht. Dann kannst du dir den Abgleich mit der Versionsnummer sparen.<br />
Für eine Mehrplatzlösung ist so ein Abgleich mit der Versionsnummer(beispielsweise über Version.txt) natürlich unerlässlich.<br />
Da bist du schon auf dem richtigen Weg. Allerdings würde ich einen kleinen externen Updatedienst schreiben den du startest wenn du feststellst, dass eine neue Version verfügbar ist.<br />
Dann kannst du nämlich dein Hauptprogramm beenden und dem Updatedienst so ermöglichen, dass er die alte exe löscht und durch die neue ersetzt.</p>
<p>[EDIT]<br />
Hab grad erst das mit dem http-Download gelesen :p<br />
Dafür kannst du z.B. die <a href="http://www.indyproject.org/Sockets/index.de.aspx" rel="nofollow">Indy</a>-Komponente IdFTP verwenden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130639</guid><dc:creator><![CDATA[rean]]></dc:creator><pubDate>Mon, 04 Sep 2006 10:16:09 GMT</pubDate></item></channel></rss>