2 Stimmen

Wie kann ich MSI mitteilen, dass es die vorhandene Datei im Setup & Deployment-Projekt in VS2005 nicht überschreiben soll?

Ich habe ein Setup & Deployment-Projekt in VS2005. Eine der Dateien, die ich installiere, ist eine SQLite-Datendatei.

Ich bin dabei, eine neue Version der Software zu veröffentlichen, aber ich habe festgestellt, dass die Datendatei überschrieben wird, wenn ich das Update auf einer bestehenden Installation ausführe.

Ich habe eine aktualisierte Datendatei im Setup-Projekt, so dass sie neuer ist als die bereits installierte, aber ich möchte sie nicht überschreiben.

Ich habe versucht, die Eigenschaft Permanent für diese Datei auf True zu setzen, aber ohne Erfolg.

Irgendwelche Vorschläge?

1voto

Muxa Punkte 5533

Ok, hier ist ein Workaround, den ich benutzt habe:

  • In meinem Setup-Projekt habe ich meine leere Datenbankdatei von Database.db in Database-blank.db umbenannt.
  • In meiner Anwendung prüfe ich, ob Database.db fehlt und kopiere Database-blank.db nach Database.db, wenn dies der Fall ist.
  • dann einfach die vorhandene Database.db laden

Auf diese Weise kann ich sicherstellen, dass die lokale Kopie der Datendatei (Database.db) nicht durch neuere Versionen der Software ersetzt wird.

0voto

Martin v. Löwis Punkte 120025

In MSI ist es am besten, einen Eintrag in der Datei Upgrade-Tabelle , um festzustellen, ob es sich um eine Upgrade-Installation handelt, und um eine Eigenschaft festzulegen, wenn dies der Fall ist. Dann legen Sie die Datendatei in einem Komponente und legen Sie eine Bedingung für die Komponente fest. Alternativ können Sie auch einen Eintrag in der Datei AppSearch-Tabelle und prüft das Vorhandensein der Datei (über die Option DrLocator-Tabelle ).

Ich weiß nicht, ob ein Setup & Deployment-Projekt so etwas unterstützt. Installieren Sie also die Datei unter einem anderen Namen und erstellen Sie dann eine benutzerdefinierte Aktion, die die Datei bedingt kopiert.

0voto

Wael Dalloul Punkte 21012

Weil VS2005 beim Upgrade eines Programms zuerst die ursprünglich installierte Instanz entfernt und dann eine neue Instanz installiert, so dass die Datei jedes Mal entfernt wird.

Um das Ersetzen oder Überschreiben der Datei zu vermeiden, schlage ich Folgendes vor: 1- Markieren Sie die Datei im Setup-Projekt als schreibgeschützt. 2- Markieren Sie die Datei im Setup-Projekt als permanent.

Nach der Aktualisierung wird die Datei nicht überschrieben, aber Ihre Anwendung kann mit dieser Datei nicht umgehen, da sie schreibgeschützt ist. Daher sollten Sie beim Start Ihrer Anwendung prüfen, ob die Datendatei schreibgeschützt ist, und das Häkchen entfernen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X