Hallo,
ein msi-Installationspaket wurde mit InstallShield 10.5 erstellt. Die Installation erfolgt unter Win XP fehlerfrei. Auch die Installation unter Windows Vista (als Administrator) verläuft auf den ersten Blick fehlerfrei. Das Logfile zeigt keine Fehler und auch der Anwendungsstart als Admin ist erfolgreich. Wird dann versucht die installierte Anwendung als "normaler" Benutzer ohne Administratorrechte zu starten, kommt die Fehlermeldung, dass eine *.ocx-Datei nicht ordnungsgemäß registriert wurde bzw. auf dem System nicht vorhanden ist. Die Analyse ergab, dass in der Registry ein Eintrag für Datei existiert (der vor der Installation noch nicht vorhanden war) und das sich die Datei (in der korrekten Version) auch im erwartetn Verzeichnis (Windows\system32\) befindet. Wird die ocx-Datei (genauer gesagt sind es zwei ocx-Dateien, die jeweils über MergeModule in das Setup integriert sind) nachträglich noch manuell deregistriert/registriert, läuft die Anwendung auch für "normale" Benutzer. Das Ein-/ bzw. Ausschalten der UAC vor der Installation oder vor dem Anwendungsstart hat keinen Einfluss auf das Verhalten.
An was könnte es liegen, dass für Standard-Benutzer die Registrierung der Dateien während der Installation nicht ordnungsgemäß erfolgt?
Danke für Antworten und Tips schon im Voraus!
InstallShield-Version: 10.5
Betriebssystem: Windows Vista (32 bit)
This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Registrierung *.ocx unter Vista
Started by
_mario
, Feb 05 2009 13:56
4 replies to this topic
Posted 09 February 2009 - 16:41
Wird die DLL korrekt unter HKEY_LOCAL_MACHINE registriert, oder vielleicht nur unter KEY_CURRENT_USER ? (HKEY_CLASSES_ROOT zeigt eine Mischung aus beiden an)
Stefan Krüger
InstallSite.org twitter facebook
Posted 10 February 2009 - 08:55
Hallo Stefan,
der Eintrag in der Registry ist unter HKEY_CLASSES_ROOT\TypeLib sowie unter HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib zu finden und verweist jeweils auf das system32-Verzeichnis, wo sich die Datei auch befindet.
Allerdings hat mich die Frage auf eine Idee gebracht und ich habe das Setup unter einem administrativen Benutzerkonto mit dem Parameter ALLUSERS=1 über die Konsole ausgeführt. Die Anwendung lässt sich nun von allen Benutzern, auch von denen mit eingeschränkten Benutzerrechten, starten.
Im MSI-Projekt befindet sich unter "Verhalten und Logik" in den Sequenzen die benutzerdefinierte Aktion ISSetAllUsers, die dies doch eigentlich automatisch tun sollte. Die Aktion ist als erste Aktion unter "Installation\Ausführen" eingeordnet. Das Problem ist, dass aus Gründen des Installationsmechanismus eine explizite Angabe eines zusätzlichen Parameters unerwünscht ist.
Wenn ich ALLUSERS im Eigenschaften-Manager des MSI-Projektes hinterlege, funktioniert die Installation ebenfalls. Allerdings erhalte ich dann eine Warnung beim Generieren des Setup. Ich schliese daraus, dass dies nicht der richtige Weg ist, im Setup den ALLUSERS-Parameter zu hinterlegen.
Welche Möglichkeit gibt es, dass die Installation ohne zusätzliche Parameterangabe in der Kommandozeile unter Vista automatisch für alle Benutzer ausgeführt wird?
der Eintrag in der Registry ist unter HKEY_CLASSES_ROOT\TypeLib sowie unter HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib zu finden und verweist jeweils auf das system32-Verzeichnis, wo sich die Datei auch befindet.
Allerdings hat mich die Frage auf eine Idee gebracht und ich habe das Setup unter einem administrativen Benutzerkonto mit dem Parameter ALLUSERS=1 über die Konsole ausgeführt. Die Anwendung lässt sich nun von allen Benutzern, auch von denen mit eingeschränkten Benutzerrechten, starten.
Im MSI-Projekt befindet sich unter "Verhalten und Logik" in den Sequenzen die benutzerdefinierte Aktion ISSetAllUsers, die dies doch eigentlich automatisch tun sollte. Die Aktion ist als erste Aktion unter "Installation\Ausführen" eingeordnet. Das Problem ist, dass aus Gründen des Installationsmechanismus eine explizite Angabe eines zusätzlichen Parameters unerwünscht ist.
Wenn ich ALLUSERS im Eigenschaften-Manager des MSI-Projektes hinterlege, funktioniert die Installation ebenfalls. Allerdings erhalte ich dann eine Warnung beim Generieren des Setup. Ich schliese daraus, dass dies nicht der richtige Weg ist, im Setup den ALLUSERS-Parameter zu hinterlegen.
Welche Möglichkeit gibt es, dass die Installation ohne zusätzliche Parameterangabe in der Kommandozeile unter Vista automatisch für alle Benutzer ausgeführt wird?
Posted 10 February 2009 - 12:02
QUOTE |
die benutzerdefinierte Aktion ISSetAllUsers, die dies doch eigentlich automatisch tun sollte |
Nein, das betrifft nur Major Upgrades. Dort sorgt die Custom Action dafür, dass die Einstellung der alten Version für die neue Version übernommen wird.
QUOTE |
Wenn ich ALLUSERS im Eigenschaften-Manager des MSI-Projektes hinterlege, funktioniert die Installation ebenfalls. Allerdings erhalte ich dann eine Warnung beim Generieren des Setup. Ich schliese daraus, dass dies nicht der richtige Weg ist, im Setup den ALLUSERS-Parameter zu hinterlegen. |
Doch, das ist okay. Das ist sogar die beste Methode, sofern du nicht einen entsprechenden Auswahldialog anzeigen möchtest. Die Warnung ist nicht zutreffend und kann ignoriert werden.
Stefan Krüger
InstallSite.org twitter facebook