Vista: EXE-File mittels "/regserver" registrieren
Posted 29 September 2008 - 14:27
In folgendem Post habe ich beschrieben dass die Funktion "Extract COM Data..." für ein EXE-File aus meinem Installer nicht funktioniert:
http://forum.install...showtopic=18583
Da ich nicht weiss warum das nicht funktioniert, habe ich mir einen Umweg überlegt:
Ich rufe nach dem Datentransfer eine "deferred Custom Action" auf welche die Datei mit dem Parameter "/regserver" registriert.
Das klappt alles wunderbar in Windows XP! Wenn ich den gleichen Installer auf Vista ausführe dann erhalte ich zum Zeitpunkt der CustomAction-Ausführung am Schluss folgende Fehlermeldung:
CODE |
Error 1721.There is a problem with this Windows Installer package. A program required for this install to complete could not be run... Action: registerEXE, location: C:\Program Files\My Company Name\My Product Name\TestFile.exe, command: /regserver |
Das Installer-Release habe ich wie folgt konfiguriert:
Releases -> Setup.exe -> Required Execution Level = "Administrator"
(wenn ich auf setup.exe klicke erhalte ich eine Meldung wo ich zuerst auf "Allow" klicken muss)
Edited by Michael.Hu, 29 September 2008 - 14:30.
Posted 30 September 2008 - 12:25
Posted 30 September 2008 - 13:40
Danke für den Tip! Self-Registering ist in diesem Fall wirklich eleganter! Zumindest in Windows XP, dort klappt es! Leider funktioniert es unter Windows Vista immer noch nicht.
Mein EXE-File welches ich registriere hat Abhängigkeiten zur Visual C++ Runtime und ich scheine offenbar genau folgendes Problem zu haben:
http://community.mac...rror 1904 vista
Installiert man die Vistual C++ Runtime vorher als Prerequisite klappt alles. Wenn man InstallShields VC++ Merge Modules nimmt dann erhalte ich den Fehler 1904 (return value -2147010895) während der Self-Registering Aktion. Eine Beschreibung für das Problem gibts hier:
http://blogs.msdn.co...dows-vista.aspx
Ich werd mich nun damit abfinden die Visual C++ Runtime vor dem Setup als Prerequisite zu installieren.
Gruss
Michael
Edited by Michael.Hu, 30 September 2008 - 13:40.
Posted 30 September 2008 - 15:55
ja, so machen wir es auch.
Ich weiß nicht ob du IS2009 hast, da könntest du die VC++ Runtime auch als Feature Prerequisite einbauen, dann läuft der Install direkt am Ende der UI-Sequenz, das finde ich eleganter.
Bin am überlegen ob ich das auch umbaue, zumal die Prüfungsmöglichkeiten auf das Vorhandensein der VC++ für das Prerequisite am Anfang des Setups recht unzureichend sind. Bei den Feature Prerequisite, kann man da auch noch was mit den Bedingungen in Abhängigkeit zum Feature drehen.
Posted 09 February 2009 - 14:44
QUOTE |
Installiert man die Vistual C++ Runtime vorher als Prerequisite klappt alles |
Danke für den Tipp zuerst.
------------------------
Habe InstallShield 2008 Prof.
Aus einem InstallScript Projekt führe ich zig Basic MSI Projekte mit
= setup.rul =
// #define REBOOT_SETUP_UNINST_KEY "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
szSub_Key = REBOOT_SETUP_UNINST_KEY;
szSub_Key = szSub_Key + "\\" + DLTSETUP_UninstGUID;
// DLTSETUP_UninstGUID = {guid}
szPathMergeModules = SRCDIR;
ChangeDirectory(szPathMergeModules);
szValueDes = szPathMergeModules ^ DLTSETUP_MERGEMODULES_MSI; // "Delta Setup.msi"
szValueDes = " /i " + "\"" + szValueDes + "\"";
// szTEMP_Merge = %TEMP%-Verzeichnis
szValueDes = szValueDes + " /L*VX " + szTEMP_Merge ^ DLTSETUP_MERGEMODULES_LOG + " /qn"; // Delta_Setup.log
LaunchAppAndWait("msiexec",szValueDes,LAAW_OPTION_WAIT);
...
aus.
In Basic MSI Projekten werden die Dateien(.ocx und .dll) registriert.
Nur ein File ist in der Components mit:
- COM Extract at Build = No
- Set Key File
- Properties - sind alle Felder leer (ist es richtig?)
definiert.
Habe meine Installation bei den verschiedenen Betriebssystemen getestet.
Unter Windows XP mit SP2(min): alle Produkte starten!
1 Test.
Betriebssystem: Vista (deutsch)
Produkt Typ: Ultimate
User: test5 - Administrator
Habe VS 6.0 Enterprise Edition :
- VB 6.0
- C++ 6.0
- ActiveX
- Datenzugriff
- Dienst
- Tools
zuerst installiert.
Danach habe Vista SP1 installiert.
Meine Installation.
->
Starten nicht alle unsere Produkte!
2 Test.
Betriebssystem: Windows 7 (deutsch)
Produkt Typ: Ultimate
User: test2 - Administrator
Habe VS 6.0 Enterprise Edition :
- VB 6.0
- C++ 6.0
- Datenzugriff
- Tools
zuerst installiert.
Meine Installation.
->
Starten alle unsere Produkte!
Bedeutet es dass ich auf dem richtigen Weg bin?
Problem:
1. was ist Unterschied zwischen Vista und Windows 7?
Danke in Voraus
bernard
Posted 09 February 2009 - 16:00
Welche Fehlermeldung? Hilft DependencyWalker oder ProcessMonitor evtl. fehlende oder nicht registrierte Abhängigkeiten zu entdecken? Oder ein Rechte-Problem.
Unter Win7 geh in die Konfiguration der Benutzerkontensteuerung und schieb den Regler ganz hoch ("always prompt"). Funktioniert dein Setup jetzt auch noch?
Stefan Krüger
InstallSite.org twitter facebook
Posted 10 February 2009 - 10:53
unter Vista (ohne SP1) starten unsere Produkte nicht.
Deswegen habe ich SP1 installiert.
2.
Dependency Walker 2.1 hat nicht geholfen.
3.
unter Vista+SP1 kommt die Meldund beim Ausführen:
sore_fehler_start.jpg
Habe probiert mit RegSpy.exe von der Seite:
http://www.installsi.../tt_analyze.htm
Alles wird ins Registry
[HKEY_CURRENT_USER\Software\<firma>\DLTPROD]
geschrieben.
Unter Windows 7:
Zuerst habe meine Installation deinstalliert.
Systemsteuerung\System und Sicherheit\Action Center\Einstellungen für Benutzerkontensteuerung
Es war:
- 3 Position - Nicht benachrichtigen, wenn ..
jetzt:
- 1 Position - Always notify me when:
Setup funktioniert wie vor.
<mein Basic-MSI> Produkt hat 35 DLLs und OCXs welche registieren mussen.
aus dem Log-File:
=== Verbose logging started: 04.02.2009 10:31:33 Build type: SHIP UNICODE 4.00.6001.00 Calling process: C:\Windows\system32\msiexec.exe ===
MSI © (F8:14) [10:31:33:004]: Resetting cached policy values
MSI © (F8:14) [10:31:33:004]: Machine policy value 'Debug' is 0
MSI © (F8:14) [10:31:33:004]: ******* RunEngine:
******* Product: E:\xx\<mein Basic-MSI>.msi
******* Action:
******* CommandLine: **********
...
MSI (s) (3C:D8) [10:31:53:942]: Note: 1: 1707
MSI (s) (3C:D8) [10:31:53:942]: Product: <mein Basic-MSI> -- Installation operation completed successfully.
MSI (s) (3C:D8) [10:31:53:942]: Das Produkt wurde durch Windows Installer installiert. Produktname: <mein Basic-MSI>. Produktversion: 1.0. Produktsprache: 1033. Erfolg- bzw. Fehlerstatus der Installation: 0.
MSI (s) (3C:D8) [10:31:53:942]: Cleaning up uninstalled install packages, if any exist
MSI (s) (3C:D8) [10:31:53:942]: MainEngineThread is returning 0
MSI (s) (3C:E4) [10:31:53:942]: RESTART MANAGER: Session closed.
MSI (s) (3C:E4) [10:31:53:942]: No System Restore sequence number for this installation.
=== Logging stopped: 04.02.2009 10:31:53 ===
MSI © (F8:14) [10:31:53:957]: Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied. Counter after decrement: -1
MSI © (F8:14) [10:31:53:957]: MainEngineThread is returning 0
=== Verbose logging stopped: 04.02.2009 10:31:53 ===
Posted 10 February 2009 - 11:04
du installierst das VC++2005Sp1!?
Hast du mal im Windows\WinSXS\ Ordner geschaut ob die entsprechenden Komponentenversionen also ATL,CRT usw. vorhanden sind?
Posted 10 February 2009 - 11:51
QUOTE |
Alles wird ins Registry [HKEY_CURRENT_USER\Software\<firma>\DLTPROD] geschrieben. |
Das heisst, die Dateien sind nur für den Benutzer registriert, der die Installation ausführt, also den Administrator. Wenn es für alle Benutzer funktionieren soll, müssen sie unter HKLM registriert werden.
Für den Admininstrator, der das Setup ausgeführt hat, sollte die Applikation allerdings trotzdem funktioneren.
Stefan Krüger
InstallSite.org twitter facebook
Posted 10 February 2009 - 15:51
Version 6.0.6001 SP1 Build 6001
auf dem TEST Rechner.
QUOTE |
du installierst das VC++2005Sp1 |
Habe installiert
- VC++6.0 Enterprise Edition
- VB Vers. 8176 VBA: Retail 6.0.8169
wie Michael empfollen hat.
...
Merging modules...
Merging ATL Module for Windows: atl.msm
Merging Microsoft Component Category Manager Library: comcat.msm
Merging Microsoft Common Controls 3 ActiveX Control DLL: comct332.msm
Merging Windows Common Controls ActiveX Control DLL: comctl32.msm
Merging CMDialog ActiveX Control DLL: comdlg32.msm
Merging Innovasys DockStudioXP 2: dsxp2.msm
Merging Microsoft Common Controls 2 ActiveX Control DLL: mscomct2.msm
Merging Windows Common Controls ActiveX Control DLL: mscomctl.msm
Merging Microsoft Standard Data Formating Object DLL: msstdfmt.msm
Merging Visual Basic Virtual Machine: msvbvm60.msm
Merging MSXML 3.0: msxml3_wim32.msm
Merging Microsoft OLE 2.40 for Windows NT and Windows 95 Operating Systems: oleaut32.msm
Merging RichText ActiveX Control Merge Module: richtext.msm
Merging TABCTL32 OLE Control DLL: tabctl32.msm
Merging VBScriptRuntime: VBScriptRuntimeENU.Msm
Merging Windows-Standardsteuerelemente - ActiveX-Steuerelement-DLL: cmctlde.msm
Merging DLL des ActiveX-Steuerelements Standarddialog (CMDialog): cmdlgde.msm
Merging MFCDLL Shared Library - Retail Version: mfc42.msm
Merging ActiveX-Steuerelement-DLL der Windows-Standardsteuerelemente: mscmcde.msm
Merging Microsoft ® C++ Runtime Library: msvcp60.msm
Merging Microsoft ® C Runtime Library: msvcrt.msm
Merging Internationale Ressourcen für Visual Basic-Umgebung: vb6de.msm
...
QUOTE |
Hast du mal im Windows\WinSXS\ Ordner geschaut |
Nach der Installation als Administrator.
Datenträger in Laufwerk C: ist VISTA
Verzeichnis von C:\Windows\winsxs\x86_microsoft-windows-atl_31bf3856ad364e35_6.0.6000.16386_none_a8e97dca5cc75c13
02.11.2006 10:46 71.680 atl.dll
1 Datei(en), 71.680 Bytes
Verzeichnis von C:\Windows\winsxs\x86_microsoft-windows-atl_31bf3856ad364e35_6.0.6001.18000_none_ab203fc659b26ce7
18.01.2008 23:33 71.680 atl.dll
1 Datei(en), 71.680 Bytes
Die beide Files haben die Dateiversion 3.5.2284.0
Verzeichnis von C:\Windows\winsxs\x86_microsoft-windows-crtdll_31bf3856ad364e35_6.0.6000.16386_none_df9e2f858dc40ff1
02.11.2006 10:46 149.019 crtdll.dll
die Dateiversion ist 4.0.1183.1
1 Datei(en), 149.019 Bytes
--------------
Stefan,
es wird pro User installiert.
Zuerst teste ich als Administrator ob alles richtig läuft.
Frage:
unter Vista: in den Gruppenrichtlinien etwas eintragen? Oder andere Idee?
Posted 12 February 2009 - 12:09
und neues Betriebssystem "Vista Ultimate" installiert.
Die Schritte wie zuvor:
1. habe VS 6.0 Enterprise Edition zuerst installiert, aber nicht gestartet.
2. habe Vista-SP1(deu) installiert.
3. unsere Installation ins Verzeichnis c:\<xxx>.
(Wird alles in Registry geschrieben.)
Alle unsere Produkte starten jetzt!
Problem:
Die OCXs und DLLs (von meinen Basic MSI Projekten) werden nicht richtig registriert!
Ich sage: User Fehler.
trotzdem vielen Dank an allen
Posted 02 March 2009 - 11:46
InstallSite Forum -> GERMAN : Windows Installer (MSI) -> InstallShield MSI Themen -> InstallShield "Basic MSI" Projekte
= Registrierung *.ocx unter Vista, Registrierung *.ocx unter Vista 2009-02-05 =
ergänzen.
Alle <meine>.msi haben in Property keine ALLUSERS= !
----------------
Habe InstallShield 2008 Prof.
Aus einem InstallScript Projekt führe ich zig Basic MSI Projekte aus.
Unter XP und Windows 7 funktioniert meine Installation.
Mein TEST PC
Betriebssystem: Vista (deutsch)
Produkt Typ: Ultimate
User: test5 - Administrator
Habe früher mit dem ausgeschaltendem UAC (User Account Control) immer getestet.
Jetzt ist neuer Test:
1.
Benutzerkontensteuerung ein- oder ausschalten
(mit Häkchen)
Meine Installation.
Dann
starten alle unsere Produkte!
dir %systemroot%\system32 /s ->
Anzahl der angezeigten Dateien:
14443 Datei(en), 2.437.951.055 Bytes
2295 Verzeichnis(se)
2.
Benutzerkontensteuerung ein- oder ausschalten
( Häkchen raus!)
neuer Start PC!
Unsere Produkte starten nicht mehr.
Es kommt die Meldung:
"Die Komponente 'xx.ocx' oder eine ihrer Abhändigkeiten ist nicht richtig registriert.
Eine Datei fehlt oder ist ungültig."
dir %systemroot%\system32 /s ->
Anzahl der angezeigten Dateien:
14520 Datei(en), 2.458.923.714 Bytes
2460 Verzeichnis(se)
Normalerweise darf User mit dem ausgeschaltendem UAC mehr machen. Oder?
ich bitte um die Hilfe
Posted 02 March 2009 - 12:01
Dein Problem könnte jetzt sein, das er beim eingeschaltetem UAC virtualisiert und nach dem Ausschalten auf den virtual Store nicht mehr zugreift.
Ergebnis ist dann, das es nicht tut.
So Aktionen werden bei Vista aber auch in der Ereignisanzeige protokolliert. Irgendwo unter ich meine virtualStore o.ä.
Posted 27 May 2009 - 07:56
InstallSite Forum -> GERMAN : Windows Installer (MSI) -> InstallShield MSI Themen -> InstallShield "Basic MSI" Projekte
Dll's regisitrieren vom 2009-04-08
------
Habe InstallShield 2008 Prof.(eng)
Aus einem InstallScript Projekt führe ich zig Basic MSI Projekte aus.
1.
Jetzt machte ich für jede DLLs und OCXs in Basic MSI Projekten:
- Components -> <my1.dll> ->
COM Extract at Build = No
.NET Scan at Build = Dependencies and Properties
.NET COM Interop = Yes
- Components -> <my1.dll> -> Files -> Set Key Files
- Components -> <my1.dll> -> Advanced Settings -> COM Registration -> Extract COM Data for Key File
2.
Mein TEST PC
Betriebssystem: Vista (deutsch)
Produkt Typ: Ultimate
User: test5 (Administrator) oder Administrator(richtiger)
UAC (User Account Control) ein- oder ausschalten: Beides
3.
Meine Installation.
Dann
starten alle unsere Produkte!
Frage noch.
Ist es im Punkt 1 alles richtig definiert?