none
Umgebungsvariable über "Setup Project Registry Editor" - Nach Deinstallation ganzer Path-Key weg RRS feed

  • 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

    Dienstag, 17. Mai 2011 15:48

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
    Mittwoch, 18. Mai 2011 12:49
  • 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

    Donnerstag, 19. Mai 2011 13:29
  • 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
    Donnerstag, 19. Mai 2011 13:41
  • 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
    Dienstag, 24. Mai 2011 13:21
  • Es gibt in der VS-IDE keinen Editor für die Umgebungsvariablen (Environment table) in Setups. Das gehört zu den vielen Dingen die dort einfach fehlen.
    - Florian
    Dienstag, 24. Mai 2011 13:43
  • 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 :(

    Donnerstag, 26. Mai 2011 15:24
  • 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
    Freitag, 27. Mai 2011 06:23