ich habe folgendes Problem bzw. Phänomen. Ich habe eine kleine recht unspektakuläre Anwendung mit dem Repackager aufgezeichnet. Anschließend mit InstallShield 2011 weiter bearbeitet.
Die Anwendung soll per SMS 2003 auf User-Clients silent installiert werden. Die Benutzer-Konten hängen im Active Directory und bekommen so einige Policies bei der Anmeldung verpasst.
Nun zu meinem Paket-Problem bzw. erstmal zu den Funktionalitäten, die nach meiner Repacketierung grundsätzlich auch funktionieren:
1. Über die Upgrade-Funktion wird per GUID nach meinem auch selbst erstellten Paket gesucht und ggf. problemlos deinstalliert.
2. Die Falldateien, die das Programm anlegt / speichert, liegen bei uns grundsätzlich auf H: (Homelaufwerk auf dem Fileserver) Damit das immer funktioniert, (auch wenn sich mal ein Admin zum Testen der Installation anmeldet), habe ich das über eine VARIABLE bei der erstmaligen Erstellung der INI-Datei, beim erstmaligen Programm-Start gelöst.
Hier wird dann immer der gefundene Pfad zum User-Verzeichnis automatisch in das Programm (bzw. die Ini-Datei) eingetragen.
3. Damit die Dateien auch immer in einem bestimmten Ordner abgespeichert werden hab ich eine CA eingebaut, die folgendes per VBScript überprüft:
a.) ist das H: Laufwerk vorhanden und wenn ja,
b.) überprüfe ob ein bestimmer Ordner vorhanden ist. Falls der Ordner fehlt, wird er automatisch angelegt. Falls er da ist, passiert halt nix.
Damit das Ganze auch funktioniert bzw. nur einmal beim erstmaligen Programm-Start (aber für jeden User) durchgeführt wird, habe ich die Repair-Funktion folgendermassen genutzt:
Unter HKCU habe ich eine eigene Dummy-Datei als Komponente angelegt. Diese dann an das Haupt-Feature angehängt und einen Key-Path drauf gesetzt.
Da bei uns die SMS-Pakete in der Regel mit dem System-Account installiert werden und das Systemkonto ja auch einen HKCU hat, merkt die MSI ja bei jedem anderen User, der das Programm zum ersten Mal startet, dass die Dummy-Datei fehlt.
Dann rennt die Repair-Funktion los, führt die benutzerdefinierte Aktion aus und der richtige Speicherpfad wird auch gleich eingetragen.
Das funktioniert alles grundsätzlich prima. Zumindest wenn ich das mit dem Lokal Admin oder mit meinem Domänen-Admin (mit zum Test gemappten H:-Laufwerk) teste.
Doppelklick auf das Icon zum Programm-Start und alles wird für den jeweiligen User durchgeführt.
ABER, wenn ich mich nach der Installation mit einem Standard-Domänen-Benutzer (samt Policies usw.) anmelde passiert folgendes Phänomen:
Die MSI-Repair-Funktion startet sofort nach der Anmeldung des Users. UND zwar bevor die ganzen Standard-Laufwerke gemappt wurden. Das ist natürlich unglücklich,
denn da das H-Laufwerk noch nicht da ist, wird weder der Ordner unter H geprüft und ggf. angelegt, noch ist nach der Anmeldung der richtige Pfad in der INI eingetragen.
Nach einer MSI-Schulung vor 2 Wochen hab ich vom Dozenten den Tipp bekommen, die MSI mit dem Flag DISABLEADVTSHORTCUTS zu installieren.
Das hilft aber auch nicht. Die MSI-Repair-Funktion startet zwar nicht mehr direkt bei der User-Anmeldung, aber beim Start des Programms auch nicht mehr.
Hat Jemand eine Erklärung für dieses merkwürdige MSI-Verhalten? Oder vielleicht eine Idee, wie ich das ganze lösen kann?
Vielen Dank schon mal im Voraus für hilfreiche Antworten und die Geduld beim lesen meiner Problembeschreibung.
Gruß
Dr. Duck
Edited by Dr. Duck, 17 May 2011 - 18:07.