Jump to content


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.
Photo

Selbstregistrierende Dateien


18 replies to this topic

Jan Becker

Jan Becker
  • Members
  • 285 posts

Posted 16 February 2001 - 14:11

ich habe dateigruppen, die selbstregistrierende dateien enthalten (Self-Registered = YES, eigentlich alles bis auf SHARED). sie werden mit anderen dateigruppen, die nicht selbstregistrierend sind in einer komponente gebuendelt und installiert. das merkwuerdige ist, dass sie einfach nicht registriert werden. in OnBegin() steht Enable(SELFREGISTERBATCH) und in OnFirstUIAfter() wird Do(SELFREGISTRATIONPROCESS) aufgerufen. da neu gestartet werden muss, sollte es nach dem reboot geschehen, doch es existiert weder eine reboot.ini noch ein eintrag in RunOnce. selbst wenn ich den reboot ausfuehre, ist keine registrierung geschehen. mache ich es per hand (regsvr32), klappt es prima, doch kann das nicht die loesung sein. uebrigens sind es ocx'se. ich weiss nicht, ob IS nur dll's registriert, doch selbst dabei bestehen probleme.

wenn ich Disable(SELFREGISTERBATCH) mache, klappt es auch, nur ist diese methode nicht wuenschenswert, da gewisse abhaengigkeiten der files bestehen. ist das ein bug in IS6.12?

jan

(Edited by Jan Becker at 1:12 pm on Feb. 16, 2001)

(Edited by Jan Becker at 1:46 pm on Feb. 16, 2001)


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 16 February 2001 - 17:12

In einem Event-basierten Skript solltest Du Enable(SELFREGISTERBATCH) und Do(SELFREGISTRATIONPROCESS) nicht aufrufen. Das passiert automatisch.

Jan Becker

Jan Becker
  • Members
  • 285 posts

Posted 20 February 2001 - 11:59

gut, ich habs weggenommen, aber keine verbesserung. ich habe mal ein neues kleines testsetup (6.12) gebastelt und es wird perfekt selbstregistriert. da richtige setup wurde mit IS 6.1 standardvertriebsversion erstellt. zwischendurch hatte ich auf maintenance pack 2 umgestellt. kann dies zu problemen fuehren? na ja, wenn nicht, macht sich ratlosigkeit breit.

MarkoK

MarkoK
  • Full Members
  • 48 posts

Posted 20 February 2001 - 15:46

bist du sicher, daß in deinem Hauptsetup alle abhängigen Dateien drin sind ? falls dlls nicht registriert werden können liegts meist daran, daß zur Registrierrung benötigte Dateien fehlen.

Jan Becker

Jan Becker
  • Members
  • 285 posts

Posted 20 February 2001 - 15:56

gute idee. existieren da moeglichkeiten, dies herauszubekommen, z.b. genaue log's oder fehlermeldungen? bei mir kommen keine. alles laeuft sauber durch.

MarkoK

MarkoK
  • Full Members
  • 48 posts

Posted 21 February 2001 - 11:11

ja, mit dem dependency walker ausm visual studio z.B. kannst du manuell alle selbstregistrierenden Dateien anschauen. Das Tool zeigt dir an, welche DLL´s gebraucht werden.

Jan Becker

Jan Becker
  • Members
  • 285 posts

Posted 21 February 2001 - 11:19

ja, der ist mir bekannt. ich habe aber ne meeenge selbstregistrierender dateien. und alle durchzuwuseln ist ne menge arbeit. wie ich auch gerade mitbekomme liegt es daran, dass ich die dll's der mfc und atl mitliefere. der austausch dieser erfordert meist einen reboot, da sie fast immer gelockt sind. wird kein reboot verlangt, registriert er anstaendig. soll jedoch ein neustart gemacht werden, klappt nix. daraus schliesse ich, dass entweder der austausch von mfc und atl nicht im sinne von IS ist oder IS einen bug mit selbstregistrierenden dateien bei einem reboot mit  hat.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 21 February 2001 - 13:14

In dem Fall sollte die Registrierung automatisch nach dem reboot erfolgen. Du hast geschrieben, dass kein RunOnce Eintrag existiert (ich hoffe, Du hast vor dem reboot nachgeschaut). Ich nehme deshalb an, dass im Zusammenhang mit dem Reboot etwas schief geht. Welchen Reboot-Dialog bzw. Finish-Dialog verwendest Du? Hast Du am Default-Skript für OnFirstUIAfter oder OnEnd etwas geändert?

Jan Becker

Jan Becker
  • Members
  • 285 posts

Posted 21 February 2001 - 13:42

ja :)
es ist auch keine reboot.ini vorhanden, an die ich mich irgendwie erinnern kann. sowas gabs mal.

neben dem anzeigen vom bitmaps und anderen kleinkram eigentlich nur das:

if( !BATCH_INSTALL ) then
 SdFinish( szTitle, szEndMessage, szMsg, szOption1, szOption2, bOpt1, bOpt2 );
else
 szEndMessage += @MSG_MUST_RESTART;
 SdFinishReboot( szTitle, szEndMessage, SYS_BOOTMACHINE, @MSG_PREPARE_RESTART, 0 );
endif;

aber ich suche erstmal weiter. scheinbar muss es an mir bzw. meinem code liegen. koennte eventuell auch fuer andere spannend sein, wenn das mal aufgeloest ist :)

(Edited by Jan Becker at 4:15 pm on Feb. 21, 2001)


Jan Becker

Jan Becker
  • Members
  • 285 posts

Posted 21 February 2001 - 17:15

ok, es liegt wohl daran, dass ich im OnEnd() event den uninstallkey aus der registry loesche.
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
RegDBDeleteKey("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + PRODUCT_GUID);
entferne ich diese beiden zeilen, klappt es ganz wunderbar. das bedeutet, dass das OnEnd event nicht das allerletzte ist, was offiziell ausgefuehrt wird. danach wird die reboot.ini angelegt und der registry eintrag gemacht. wird der uninstalleintrag vorher geloescht, geht dieser letzte wichtige schritt in die hose. das sollte besser auf der seite zum thema "Avoid Maintenance Mode" erwaehnt werden. wenn ich mich irre, waere es verdammt schoen :)


Jan Becker

Jan Becker
  • Members
  • 285 posts

Posted 21 February 2001 - 17:16

ok, es liegt wohl daran, dass ich im OnEnd() event den uninstallkey aus der registry loesche.
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
RegDBDeleteKey("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + PRODUCT_GUID);
entferne ich diese beiden zeilen, klappt es ganz wunderbar. das bedeutet, dass das OnEnd event nicht das allerletzte ist, was offiziell ausgefuehrt wird. danach wird die reboot.ini angelegt und der registry eintrag gemacht. wird der uninstalleintrag vorher geloescht, geht dieser letzte wichtige schritt in die hose. das sollte besser auf der seite zum thema "Avoid Maintenance Mode" erwaehnt werden. wenn ich mich irre, waere es verdammt schoen :)


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 21 February 2001 - 21:15

Also laut dem Artikel sollte das Löschen des Unisntall-Registry-Eintrags keine derarticgen Probleme machen. Allerdings ist das natürlich nicht offiziell dokumentiert, d.h. vielleicht funktioniert es nur manchmal, oder nur in bestimmten IS Versionen.

Machst Du zufällig auch ein DeleteDir( DISK1TARGET, ALLCONTENTS ) ? Damit ist natürlich keine automatische Registrierung mehr möglich.


Jan Becker

Jan Becker
  • Members
  • 285 posts

Posted 23 February 2001 - 10:05

das mache ich nicht. es wird lediglich der registry eintrag rausgeschmissen. aber es funktioniert nachweislich nicht. auch nicht in minimalen testsetups. man sollte es wirklich als hinweis aufnehmen. weiterhin werde ich mir jetzt ne exe basteln (aehnlich guid.exe), die auf das ende des setups wartet und den schluessel dann loescht. so klappts :)

jan


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 23 February 2001 - 13:43

Alles klar, ich ändere den Artikel.

posty

posty
  • Members
  • 58 posts

Posted 28 February 2001 - 21:28

Now this would definitely be cool to see what is going on here....

If only I could read German...

Oh well...


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 01 March 2001 - 08:39

You may want to use the English forums here on InstallSite instead of the German.

Jan Becker

Jan Becker
  • Members
  • 285 posts

Posted 02 March 2001 - 15:07

Quote
Quote: from posty on 8:28 pm on Feb. 28, 2001
Now this would definitely be cool to see what is going on here....

If only I could read German...

Oh well...

ok, its quite a large topic,so i can understand your interest in it. my problem was, that selfregistering files (marked as selfregistered in IS) will not be registered when you have to reboot your machine. no RUNONCE entry existed and no reboot.ini. after a while of searching the problem i came to the conclussion, that deleting the Uninstall-registrykey in the OnEnd-event causes the problem. when i removed this line, everything worked fine. so i wrote a little binary that will be called in OnEnd(). that little tool waits for IS and removes the uninstall-key. so, i avoid maintenance mode and i'll get all files registered after reboot.

btw, the article "Avoid maintenance mode" has to be changed.

if you want to know more details or whatever, just ask.

jan


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 04 March 2001 - 20:17

Quote
btw, the article "Avoid maintenance mode" has to be changed.

Article has been changed.