Uninstall aus UNC-Pfad
Posted 20 December 2011 - 16:40
bei einem heutigen Supportfall hat mich der CostFinalize so ziemlich angenervt.
Wir bieten beim Installieren die Möglichkeit die DBs auch zentral abzulegen, dies hat der Kunde auch in den Pfad "\\Server\Freigabe\MDB" getan. Nun ist ihm der Server abgeraucht und er wollte unser Programm neu in ein lokales Verzeichnis installieren. Beim Uninstall kommt jedoch beim CostFinalize die Meldung das \\Server\Freigabe\MDB nicht gefunden werden kann. Das Verzeichnis wird während des CostFinalize wohl irgendwo aus der Registry gezogen und versucht dem ursprünglichen Verzeichnisproperty [MDB] zuzuordnen. Beim Prüfen wird festgestellt das das Verzeichnis nicht erreichbar ist und die Installation bricht ab. Versuche das Property von außen mitzugeben sind gescheitert. Ich habe auch versucht in die temporäre MSI eine CA über Orca einzubauen die das Property auf einen andern Wert setzt, nichts geht. Wie soll ich da ran kommen. Wie/Wo muss ich meine Installation anpassen, damit mir das in Zukunft nicht mehr passiert und ich auch bei einem Deinstall diesen Verzeichnispfad nachträglich noch umsetzen kann?
Posted 23 December 2011 - 12:49
Wenn du die .msi Datei anpasst und z.B. eine Custom Action Typ 51 vor InstallInitialize einbaust, dann musst du diese .msi per msiexec.exe mit Parameter REINSTALLMODE=v aufrufen, damit auch wirklich die neue .msi Datei verwendet wird. Der PackageCode muss natürlich auch geändert werden. Im Log solltest du dann sehen, ob deine CA ausgeführt wird.
Stefan Krüger
InstallSite.org twitter facebook
Posted 28 December 2011 - 11:47
das Setzen der Property war ohnehin nur ein Test. Nach meinen jetzigen Versuchen mit dem Problem macht es m.E. eh wenig Sinn das Property vorher zu setzen, da es beim Deinstall im CostFinalize wieder auf den Ursprung der Installation gesetzt wird, auch wenn es schon korrekt gesetzt war:
PROPERTY CHANGE: Modifying MDB property. Its current value is '\\Server\Freigabe\MDB'. Its new value: '\\Server\Freigabe\MDB'.
Nö, meiner Meinung nach ist an der Ecke was vom MSI falsch. Wenn ich eine Installation erstelle und Daten in einen UNC-Pfad ablege und dann wieder Deinstalliere, dann habe ich folgendes Verhalten:
Zielpfad der Daten:
\\Server\Freigabe\MDB
-Wenn ich die Freigabe wegnehme, dann bekomme ich beim CostFinalize der Deinstallation die oben genannte Meldung, das auf den Pfad nicht zugegriffen werden kann und die Deinstallation bricht ab.
-Bennen ich aber nur das Zielverzeichnis im UNC-Pfad für die Deinstallation um also zb. in:
\\Server\Freigabe\__MDB
dann läuft die Deinstallation durch. Der CostFinalize setzt die Ursprünglichen Pfade auf \\Server\Freigabe\MDB, obwohl dieser Pfad nicht erreichbar ist, da der Zielpfad ja umbenannt wurde.
Also Zielfreigabe entfernen = Fehler/Abbruch, Zielverzeichnis umbenennen = kein Problem.
Ist doch irgendwie nicht ganz normal oder?
Posted 28 December 2011 - 18:35
Stefan Krüger
InstallSite.org twitter facebook
Posted 29 December 2011 - 08:53
Posted 29 December 2011 - 18:17
Stefan Krüger
InstallSite.org twitter facebook
Posted 02 January 2012 - 14:31
Wir bekommen solche Installationen nur vom System in dem wir manuell in der Registry austragen, was extrem unsauber ist.
Edited by ali, 02 January 2012 - 14:31.
Posted 04 January 2012 - 14:39
Stefan Krüger
InstallSite.org twitter facebook
Posted 04 January 2012 - 16:20
Aktion beendet um 15:57:03: IsolateComponents. Rückgabewert 0.
MSI (s) (BC:98) [15:57:03:720]: PROPERTY CHANGE: Adding OutOfDiskSpace property. Its value is '0'.
MSI (s) (BC:98) [15:57:03:720]: PROPERTY CHANGE: Adding OutOfNoRbDiskSpace property. Its value is '0'.
MSI (s) (BC:98) [15:57:03:720]: PROPERTY CHANGE: Adding PrimaryVolumeSpaceAvailable property. Its value is '0'.
MSI (s) (BC:98) [15:57:03:720]: PROPERTY CHANGE: Adding PrimaryVolumeSpaceRequired property. Its value is '0'.
MSI (s) (BC:98) [15:57:03:720]: PROPERTY CHANGE: Adding PrimaryVolumeSpaceRemaining property. Its value is '0'.
MSI (s) (BC:98) [15:57:03:720]: PROPERTY CHANGE: Modifying SystemFolder property. Its current value is 'C:\Windows\SysWOW64\'. Its new value: 'C:\Windows\SysWOW64'.
...
MSI (s) (BC:98) [15:57:03:814]: Note: 1: 1314 2: \\TESTSRV01\Freigabe\Server\program files\alv\Easy\
MSI (s) (BC:98) [15:57:03:814]: Note: 1: 1606 2: \\TESTSRV01\Freigabe\Server\program files\alv\Easy\
Aktion gestartet um 15:57:03: CostFinalize.
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 2012 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 2108 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 2912 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 3144 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 2096 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 3504 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 1996 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 3656 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 3724 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 3032 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 3356 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 1636 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 3480 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 3808 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 3232 could not be cancelled. Error: 1168
MSI (s) (BC:AC) [15:58:24:564]: I/O on thread 3976 could not be cancelled. Error: 1168
MSI (s) (BC:98) [15:58:24:564]: Produkt: TestInstallation -- Fehler 1606. Zugriff auf die Netzwerkadresse \\TESTSRV01\Freigabe\Server\program files\alv\Easy\ war nicht möglich.
MSI (s) (BC:98) [15:58:24:564]: Note: 1: 1606 2: \\TESTSRV01\Freigabe\Server\program files\alv\Easy\
MSI © (98:A4) [15:57:03:814]: Font created. Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg
Fehler 1606. Zugriff auf die Netzwerkadresse \\TESTSRV01\Freigabe\Server\program files\alv\Easy\ war nicht möglich.
MSI (s) (BC:98) [15:58:31:845]: Produkt: TestInstallation -- Fehler 1606. Zugriff auf die Netzwerkadresse \\TESTSRV01\Freigabe\Server\program files\alv\Easy\ war nicht möglich.
MSI © (98:A4) [15:58:24:564]: Font created. Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg
Fehler 1606. Zugriff auf die Netzwerkadresse \\TESTSRV01\Freigabe\Server\program files\alv\Easy\ war nicht möglich.
Aktion beendet um 15:58:31: CostFinalize. Rückgabewert 3.
Aktion beendet um 15:58:31: INSTALL. Rückgabewert 3.
Posted 04 January 2012 - 19:24
Stefan Krüger
InstallSite.org twitter facebook
Posted 05 January 2012 - 19:29
Dann fällt mir leider momentan auch keine Lösung ein.
Stefan Krüger
InstallSite.org twitter facebook
Posted 06 January 2012 - 10:10
Posted 10 January 2012 - 17:44
Stefan Krüger
InstallSite.org twitter facebook
Posted 10 January 2012 - 18:52
Posted 11 January 2012 - 08:05
Vielleicht hilft es, wenn vor der Deinstallation einmal "Reparieren" ausgeführt wird?
Gruß
Jürgen Markert
(Anwender von InstallShield 2016 - Professional Edition)
Posted 11 January 2012 - 11:26
Als ALternative zum manuellen Eingriff in die Registry gibt es seit kurzem ein offizielles Tool von Microsoft:
http://msmvps.com/bl...creenshots.aspx
Stefan Krüger
InstallSite.org twitter facebook
Posted 13 January 2012 - 11:14
Das Problem hat man ausschließlich wenn der Pfad ein UNC Pfad ist, also mit einem \\Servername beginnt. Nutzt man anstelle diesem ein Netzlaufwerk zb z:\Ordner dann kommt diese Problem nicht vor, in diesem Fall werden im CostFinalize lokale Ordner ausgehend vom RootProperty gezogen.
Weiter ist mir aufgefallen, das man das Problem nur mit Subdirectories ausgehen vom Rootdirectory mit UNC Pfad hat. Ein Beispiel:
In der DirectoryTable gibt es die folgenden Einträge:
DATABASEDIR, TARGETDIR, Daten
MDB, DATABSEDIR, Mdb
DOC, DATABASEDIR, Doc
Wenn der Server beim Deinstall nicht erreichbar sein sollte, wird DATABASEDIR auf "C:\" gesetzt. Bei MDB und DOC wird allerdings versucht diese auf den bei der Installation mitgegebenen UNC Pfad zu setzen. Dadurch kommt es zum beschriebenen Fehler. Manuelles anpassen von MDB und DOC über CommandLine oder CA schlägt auch fehl, die Properties werden im CostFinalize trotzdem versucht umzusetzen.
Ein ganz anderes verhalten, wenn ich anstelle des UNC-Pfades einen Netzlaufwerk (z:\) verbinde und mitgebe. Wenn ich hier bei der Deinstallation das Netzlaufwerk trenne und die Freigabe am Server wegnehme, dann werden die Properies wie folgt gesetzt:
DATABSEDIR, C:\
MDB, C:\Mdb
DOC, C:\Doc
somit gibt es bei der Deinstallation keine Probleme.
Ich kann mir nicht vorstellen, dass dieses unterschiedliche Verhalten wirklich gewollt ist.
Edited by ali, 13 January 2012 - 11:17.