2010-08-25 5 views
5

Ich aktualisiere eine vorhandene Anwendung, die über ein Setup- und Bereitstellungsprojekt installiert wird.Schreiben in AppData von einem Setup- und Bereitstellungsprojekt

Die alte Anwendung hat während der Installation eine Konfigurationsdatei und eine Datenbankdatei in den Programmordner der Anwendung kopiert. Dies funktionierte auf Win 2000 und Win XP (unter einem lokalen Administratorkonto). In Windows 7 ist dies jedoch nicht nur verpönt, es funktioniert aufgrund der UAC auch nicht.

Also ich möchte die Anwendung aktualisieren, um seine Config/Daten in CommonApplicationData schreiben. Im vorhandenen Setup- und Bereitstellungsprojekt können Sie einige Speicherorte einfach als Ziele zum Kopieren von Dateien auswählen. Anwendungsordner, Benutzer-Desktop, & Programmdateien des Benutzers.

Ich sehe kein analoges Mittel, dem Setup-Programm mitzuteilen, in die AppData/CommonApplicationData-Ordner zu kopieren. Gibt es das, und wenn nicht, gibt es irgendwelche einfachen Korrekturen?

Danke!

Antwort

5

Machen Sie einen Rechtsklick | Speziellen Ordner hinzufügen | Benutzerdefinierter Ordner und benennen Sie alles, was Sie möchten (Common Application Data Folder wäre gut)

Ändern Sie in dem Ordnereigenschaftenraster das DefaultLocation Attribut zu [CommonAppDataFolder].

Fügen Sie dem Ordner eine Datei hinzu, erstellen und installieren Sie. Sie sollten Ihre Datei in C: \ ProgramData unter Windows 7 finden.

Beachten Sie, ich empfehle andere Tools wie InstallShield und WiX über Visual Studio Deployment-Projekte. Das Werkzeug ist sehr begrenzt in was es tun kann und Sie werden schließlich eine Mauer treffen.

+1

Dies funktionierte größtenteils gut, aber ich fügte einige Dateien in einem Verzeichnis hinzu, einschließlich einer Datenbankdatei. Ich bin in der Lage, in neue Dateien innerhalb des Ordners zu schreiben, und vorhandene Dateien zu überschreiben, aber die Datenbank sagt, dass es nur gelesen wird. Irgendwelche Gedanken da? – turtle

+0

MS-DOS-Stil schreibgeschützt (attrib + R) oder NTFS ACL schreibgeschützt? (Benutzer hat keine Berechtigungen) (übrigens, das ist wirklich eine neue Frage) –

+1

Entschuldigung. Ich stimme dem zu, aber es ist stark verwandt, denke ich. Mit der obigen Methode kann ich die Dateien und Ordner erstellen, aber es scheint, dass die Ordner als schreibgeschützt für Standardbenutzer erstellt werden, was gegen den Verwendungszweck des App-Datenordners zu gehen scheint. Gibt es eine Möglichkeit, die obige Methode so zu bearbeiten, dass das Setup- und Bereitstellungsprojekt die Ordner als schreibbar für einen Standardbenutzer erstellt? – turtle