Automatische Programmaktualisierung und Windows 7

8

Wir haben eine Reihe von Programmen, die beim Start nach neuen Versionen suchen und dann neue Versionen herunterladen, die bei Bedarf ausgeführt werden. Dies ist offensichtlich ein Problem in Windows 7, wenn es als 'Standardbenutzer' gesperrt ist, da sie nicht in das Verzeichnis c: \ program files und darunter schreiben können. Hat jemand ein Beispiel für eine Anwendung gesehen, die sich mit Problemen herumschlägt?

Unsere Anwendungen sind in Delphi geschrieben, aber ein Beispiel in jeder Sprache wäre nützlich.

Vielen Dank im Voraus

Aktualisierung:

Wir haben bereits ein System, um zu bestimmen, ob eine neue Version existiert, das einzige Problem ist das Herunterladen und Installieren (falls erforderlich), da dies eine Erhöhung erfordert. Ich kann mir keinen Weg vorstellen, der keine Aufforderung zur Erhöhung erfordert, oder unsere Benutzer müssen ihre Sicherheitseinstellungen reduzieren.

Update 2:

Ich habe eher eine nachfolgende Frage gestellt als hier ein neues hinzuzufügen

    
Mmarquee 05.03.2010, 15:00
quelle

8 Antworten

7

Es gibt zwei Optionen für die Anwendungsinstallation:

  1. Die Anwendung ist für alle Benutzer verfügbar : Für die Installation oder Aktualisierung ist eine Erhöhung für Windows Vista und höher erforderlich
  2. Die Anwendung ist für einen Benutzer verfügbar : Installieren oder aktualisieren Sie die Anwendung im Benutzerprofil unter % LOCALAPPDATA% , keine Erhöhung ist erforderlich

Anzeige 2: Google Chrome tut dies. Es installiert die .exe hier:

% LOCALAPPDATA% \ Google \ Chrome \ Anwendung \ chrome.exe

- Jeroen

    
Jeroen Wiert Pluimers 06.03.2010, 09:53
quelle
6

Normalerweise sehen Sie eine Anwendung, wenn sie Berechtigungen eskalieren muss. Dies ist in etwa so.

  1. Die Anwendung bestimmt, ob ein Upgrade erforderlich ist
  2. Die Anwendung startet einen "Updater" -Dienst, der Administratorrechte benötigt
  3. Die Anwendung aktualisiert sich mit diesem aktualisierten
  4. Die Anwendung wird neu gestartet

Dies ist ein ziemlich häufiges Szenario, insbesondere da Sie Ihre eigene DLL aktualisieren müssen, müssen Sie trotzdem zu einem sekundären Prozess gehen.

    
Mitchel Sellers 05.03.2010 15:02
quelle
3

Hier finden Sie einige Tipps für die Aktualisierung von Herausforderungen:

  1. Wenn Ihre Datei die Namen 'update.exe' oder 'install.exe' hat, wird automatisch eine Aufforderung zur UAC-Erhöhung erzwungen. Dies ist eine einfache Möglichkeit, vorhandene Software Windows Vista / 7-Berechtigungen zu umgehen.
  2. Es ist keine gute Idee, den Aktualisierungsüberprüfungs- und -aktualisierungsprozess in Ihrer Anwendung zu verwalten. Das Problem besteht darin, dass Ihre App wahrscheinlich Dateien sperrt und selbst aktualisiert werden muss. Eine externe App sollte Ihre Updates verwalten.
  3. Die einfachste Update-Lösung besteht darin, einen HTTP-Aufruf durchzuführen, der nach der aktuellen Produktversionsnummer sucht, und dann gegebenenfalls die Installer-Binärdatei herunterzuladen. Dies gibt Ihnen keine Flexibilität bei Updates, aber es ist eine schnelle und einfache Lösung.

Unsere Firma verkauft Software, die speziell mit automatischen Updates auf Windows 7 UAC hilft (Sie können AutoUpdate + besuchen, indem Sie hier klicken: link text ). Die besten Gründe für die Verwendung einer Lösung von Drittanbietern - jede Lösung - ist, dass Sie mehr Flexibilität bei Ihren Aktualisierungen haben und die kniffligen Herausforderungen der Unterstützung verschiedener Windows-Versionen vermeiden.

    
Simon E 14.06.2010 15:37
quelle
1

Oder Sie können es so einrichten, dass der Benutzer eine Startanwendung ausführt.

  1. Die Anwendung verwendet den Ordner LOCALAPPPATH \, um einen Cache der Hauptanwendung zu speichern.
  2. Launcher überprüft, ob das Internet eine neuere Version der Datei (en) als die zwischengespeicherte Datei hat.
  3. Launcher startet die zwischengespeicherte Anwendung in LOCALAPPPATH
Mark Robinson 05.03.2010 15:31
quelle
1

Ihre App kann prüfen, ob eine neue Version auf dem Remote-Server verfügbar ist. Wenn dies der Fall ist, kann es Update-Dateien in einem der benutzerspezifischen Ordner, wie dem temporären Ordner des Benutzers, herunterladen. Sie können die Adresse solcher speziellen Ordner über die SHGetSpecialFolder API-Funktion erhalten.

Sobald der Download abgeschlossen ist, können Sie ein Dialogfeld öffnen, das dem Benutzer mitteilt, dass Sie für das Update bereit sind. Wenn der Benutzer der Aktualisierung zustimmt, können Sie den Aktualisierungsprozess mit erhöhten Rechten (als Administrator) ausführen, und der Aktualisierungsprozess kann vorhandene Dateien in Ihrem Installationspfad durch diejenigen ersetzen, die bereits im Temp-Ordner des Benutzers heruntergeladen wurden. Um Ihren Updater als Administrator auszuführen, können Sie ShellExecute verwenden:

%Vor%

Wenn die Aktualisierung abgeschlossen ist, kann Ihr Aktualisierungsprozess Ihre App neu starten.

    
vcldeveloper 05.03.2010 16:33
quelle
1

Sie müssen eine separate ausführbare Datei für die Aktualisierung haben. Der Updater muss über ein Manifest verfügen, das eine Erhöhung markiert.

Siehe: Ссылка

    
Frederik Slijkerman 05.03.2010 21:42
quelle
1

Wenn Ihre Anwendung MSI (Windows Installer) für ihr Installationsprogramm verwendet, Benutzer Durch die Kontrolle der Kontosteuerung können Sie bei ordnungsgemäßer Konfiguration Aktualisierungen ohne Höhenänderungen installieren.

    
Josh Kelley 14.06.2010 15:44
quelle
0
  1. Wenn Ihr Installer nicht unter admin ausgeführt wurde, benötigen Sie keine zusätzlichen Rechte, um update zu installieren.

  2. Wenn Ihr Installationsprogramm unter admin ausgeführt wurde, kann es eine Aufgabe in Task-Übersicht erstellen. Sagen Sie, führen Sie diese Aufgabe einmal pro Woche unter diesem Account (Admin) und mit den höchsten Rechten aus. Aufgabe wird Ihr Updater sein. Einfach.

Alex 15.06.2010 00:35
quelle