Fragensteller
Umgebungsvariable über "Setup Project Registry Editor" - Nach Deinstallation ganzer Path-Key weg

Allgemeine Diskussion
-
Hi,
verwende Visual Studio 2010 Premium Edition.
Hab ein Setup Project erzeugt über welches ich anhand des Registry Editors System-Variablen in "Path" setze.
Lief wie geschmiert, nur nach der Deinstallation wird der komplette "Path"-Key aus den Registries gelöscht.
Hab lange gegoogelt, aber leider Nichts "simple" zu implementierendes gefunden. Weiß jemand wie man das Löschen
des gesamten Path-Keys unterbinden kann. (Von mir aus können die Einträge auch unverändert drinnen bleiben.)
Dank im Voraus.
LG,
Sani
- Typ geändert Robert BreitenhoferModerator Montag, 6. Juni 2011 15:37 Keine Rückmeldung des Fragenstellender
Alle Antworten
-
Beim Anlegen im Registry Editor, musst Du in den Eigenschaften deines "Path"-Keys "AlwaysCreate" und "DeleteOnUninstall" auf False stellen.
Alternativ kannst Du deine Änderungen mit einer CustomAction durchführen, die beim Deinstallieren den Path-Key parst und deine Teile daraus entfernt.
Ich halte es für keine gute Sache im Path mittels Setup rumzuspielen, prüfe ob das wirklich nötig ist. Dazu noch ein Hinweis, es gibt auch den AppPath, diesen kannst Du passend zu deiner Anwendung anlegen und auch dementsprechend einfacher wieder aus der Registry entfernen.
- Florian -
Hi,
danke für die Antwort.
Das mit AlwaysCreate und DeleteOnUninstall hatte ich bereits ausprobiert. Hatte nichts geändert. Das war ja das merkwürdige.
Würd mich interessieren ob das nur bei mir der Fall ist, aber ich denke nicht, da anscheinend viele dieses Problem haben (laut Google)
und irgendwie auch keine Lösung vorhanden ist.
Ich hab es jetzt anders gelöst, ich führ am Ende der Installation eine exe-Datei aus und schreibe so die Umgebungsvariable. Jedoch gibt
es hier Berechtigungsprobleme. Meine Angst: Bei jedem Rechner manuelle Modifikation der Berechtigung, auf Registry-Ebene, durchführen zu müssen.
LG
Sani
-
Möglicherweise ein Bug in VS2010, ich bin mir sicher das dies in früheren Versionen funktionierte. Da wir seit längerem WIX verwenden hab ich das jetzt auch nicht überprüft.
Falls die Setup-Projekte in diesem Punkt die MSI-Datei nicht korrekt erstellen ist auch eine Nachbearbeitung mit Orca möglich.
Die genannten Alternativen (Nutzung von AppPath, CustomActions) sind kein gangbarer Weg?
- Florian -
Bei Windows Installer gibt es für Umgebungsvariablen eine eigene Tabelle: Environment . Ob die per VS zugänglich ist, weiß ich nicht. Falls du dort mittels Property etwas an den PATH anhängst ist es wichtiog, dass das Property auch bei der Deinstalaltion den gleichen Wert hat, damit Windows Installer weiß, was er aus dem PATH wieder rausnehmen muss.
Stefan Krueger, Microsoft MVP - Windows Installer, www.InstallSite.org -
Es lässt sich ja ohne Probleme in die PATH reinschreiben, aber nach der Installation wird der gesamte Path-Eintrag gelöscht. Ich weiß noch immer nicht wie man das lösen kann.
Hatte damals die Umgebungsvariablen über den Registry-Editor des Setup-Projekts geschrieben (Wie Stefan sagte: environment Tabelle - einfach googlen).
Hab es jetzt durch ein Hilfe-Projekt gelöst welches am Ende nach der Installation ausgeführt wird:
using System; using System.Diagnostics; using Microsoft.VisualBasic.FileIO; namespace SetupHelp { class Program { static void Main(string[] args) { String progFileDir = SpecialDirectories.ProgramFiles; String existingPath = System.Environment.GetEnvironmentVariable("path", EnvironmentVariableTarget.Machine); System.Environment.SetEnvironmentVariable("path", existingPath + @";C:\MyProj;" + progFileDir + @"\AnotherDirectory", EnvironmentVariableTarget.Machine); } } }
Problem hierbei: Berechtigungen :(
-
Es ist nicht dasselbe wenn man direkt in die Registry schreibt! Es gibt in MSI Paketen die Möglichkeit eine Tabelle für die Umgebungsvariablen (Environment Table) zu verwenden und diese wird nicht verwendet wenn man im Registry-Table Werte angibt (so wie dies im Registry Editor gemacht wird).
Da Dein Eintrag für die Path-Variable sicher überschaubar ist, würde ich diesen manuell mit Hilfe von ORCA in das MSI Paket eintragen und auf die Verwendung des Registry Editors verzichten. Ansonsten empfehle ich Dir die Einarbeitung in ein Tool mit mehr Möglichkeiten. Wir verwenden hier Windows Installer XML, die Einarbeitung in die Syntax hat mir auch viel beim Verständnis der MSI-Tabellen geholfen.
Dein Hilfe-Projekt müsste, um keine Probleme mit Berechtigungen zu bekommen, in einer Custom Action des Setups ablaufen. Ich rate allerdings davon ab, da es im Windows Installer die Möglichkeit gibt eine entsprechende Tabelle zu verwenden und so dem Installer neben der Installation auch die saubere Deinstallation zu überlassen. Andernfalls müsstest Du dir auch überlegen wie dein "Hilfe-Projekt" Code für die Deinstallation aussehen müsste.
Gruß
- Florian