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

WiX & Win8: CustomAction After InstallFinalize funktioniert nicht


15 replies to this topic

RaveKev

RaveKev
  • Full Members
  • 7 posts

Posted 04 June 2013 - 11:08

Hallo,

 

ich nutze das WiX-toolset um ein MSI zu bauen.

Darin habe ich folgende Zeilen:

 <Package
      InstallerVersion="200"
      Compressed="yes"
      Description="Software Installer"
      Manufacturer="$(var.Manufactor)"
      InstallScope="perMachine"
      InstallPrivileges="elevated"
      /> 
    [...]
<CustomAction Id="LaunchInstaller"
         FileKey="file_Software_Installer_0"
         ExeCommand=""
         Execute="immediate"
         Impersonate="yes"
         Return="asyncNoWait" />

    <InstallExecuteSequence>
      <Custom Action="LaunchInstaller" After="InstallFinalize"/>
    </InstallExecuteSequence>

Dies funktioniert unter Windows 2012 aber leider nicht unter Windows 8.

 

Woran kann das liegen, dass die Datei mit der ID "file_Software_Installer_0" unter Windows 2012 nach der Installation gestartet wird, aber bei Windows 8 nicht?

 

 

Vielen Dank und schöne Grüße,

Kevin



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 04 June 2013 - 12:33

Ich empfehle ersten das Logfile zu analysieren und zweiten den Process Monitor von Sysinterals zu nehmem um herauszufinden, ob die Custom Action ausgeführt wird, ob die Datei gestartet wird (oder z.B. nicht gefunden wird), oder ob die Datei z.B. gleich wieder abbricht. Auch ein Berechtigungsproblem sollte der Process Monitor erkennen.

 

Ach so, vorab: lässt sich die Datei nach der Instalaltion manuell starten oder fehlt ihr vielleicht irgendeine Abhängigkeit (z.B. .NET)?



RaveKev

RaveKev
  • Full Members
  • 7 posts

Posted 04 June 2013 - 12:44

Per Hand kann ich die Datei starten.

Sie sollte auch selber Logfiles schreiben, aber diese werden auch nicht geschrieben (weswegen ich davon ausgehe, dass die .exe garnicht erst aufgerufen wird).

Aber ich werde schauen, ob ich mit dem Process Monitor weiter komme.

 

Vielen Dank.



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 04 June 2013 - 12:50

Ja, aber im Installer log wird stehen, ob die Custom Action aufgerufen wird. Es ist ja ein Unterschied, ob die CA nicht gestartet wird, oder ob sie die EXE nicht starten kann.



RaveKev

RaveKev
  • Full Members
  • 7 posts

Posted 04 June 2013 - 14:41

Ich habe jetzt herausgefunden, dass Windows8 die Action ausführt, wenn ich das MSI aus einem cmd starte, welches Adminrechte hat. Bei einem einfachen Doppelklick funktioniert die Action nicht.

Die Aufzurufende Datei liegt unter %PROGRAMFILES%\Pfad\Pfad\datei.exe.

 

Muss ich für Windows8 weitere Settings setzen außer im Package-Tag

InstallPrivileges="elevated"

sowie der Property

<Property Id="MSIUSEREALADMINDETECTION" Value="1" />


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 04 June 2013 - 14:47

Wäre mir jetzt nichts bekannt. Hast du mal verglichen, wann unter den beiden Betriebssystemen der UAC-Dialog kommt? Gleich beim start des Setup oder erst kurz bevor der Kopiervorgang beginnt?



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 04 June 2013 - 14:48

Klingt übrigens nach einem Berechtigungsproblem. Was sagt Process Monitor dazu?



RaveKev

RaveKev
  • Full Members
  • 7 posts

Posted 04 June 2013 - 15:19

Der Process Monitor sagt mir, dass das Programm mit dem Exitcode "-1073740756" beendet wird. Also wie schon angenommen ein Berechtigungsproblem.

Die UAC wird - wenn sie Aktiviert ist - nicht aufgerufen und ich kann auch nichts bestätigen.



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 04 June 2013 - 15:32

Hast du UAC mal auf die höchste Stufe gestellt, damit der Dialog auf jeden Fall angezeigt wird?

Du hattest UAC nicht etwa abgeschaltet bzw. auf unterste Stufe gestellt? Die hat sich nämlich von Win7 zu 8 geändert: http://windowsitpro....l-uac-windows-8



RaveKev

RaveKev
  • Full Members
  • 7 posts

Posted 04 June 2013 - 15:42

Bei den höchsten Einstellungen passiert leider auch nichts. :unsure:



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 05 June 2013 - 16:58

Die Benutzerkontensteuerung steht auf "immer benachrichtigen" und trotzdem kommt keine Nachfrage?? Das ist ja sehr seltsam.



akerl

akerl
  • Full Members
  • 104 posts

Posted 24 June 2013 - 06:16

Die CA wird nach InstallFinalize ausgeführt, also außerhalb des Execution-Moduls, so dass die CA nur über Standard-User-Rechte verfügt. Falls die zu startende Exe jedoch erhöhte Privilegien benötigt (Manifest, Setup-Heuristik) kommt es zu dem Fehler. Starten von EXE nach der Installation sind effektiver in Commit-CA's aufgehoben.

 

HTH


Andreas Kerl

Inside Windows Installer 4.5
ISBN 3-86645-431-7


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 24 June 2013 - 17:04

Hallo Andreas,

was ich dabei aber nicht verstehe:

  • Warum funktioniert es unter Server 2012 aber nicht unter WIndows 8. Welchen Unterschied gibt es da?
  • Wieso kommt nie ein UAC Dialog, trotz InstallPrivileges="elevated" und höchster UAC-Stufe in der Systemsteuerung?


RaveKev

RaveKev
  • Full Members
  • 7 posts

Posted 24 June 2013 - 23:18

Okay, "Commit-CA" mal merken für die WiX-Schulung nächste Woche ;)

Gibt es eine andere Position, wo ich die exe aufrufen könnte, um die Rechte mit übergeben zu bekommen - nicht nach InstallFinalize?



akerl

akerl
  • Full Members
  • 104 posts

Posted 26 June 2013 - 15:03

Hallo Stefan,

ich bin da bei dir; manche Dinge sind bei der UAC nicht wirklich nachvollziehbar, so auch die Sache mit dem Server 2012. Ich kann Dir nicht sagen, warum es da funktioniert und unter Windows 8 nicht - ich habe mit dem Server noch nicht wirklich gearbeitet. Muss ich wohl mal ran. ;-)
Mit dem nicht erscheinenden UAC-Dialog sollte am Server-Prozess liegen. UAC-Dialoge erscheinen ja nur wenn der Aufruf der EXE aus einem interaktiven Prozess erfolgt. Das ist beim MSI-Service ja definitiv nicht der Fall, so dass ohne UAC gestartet wird.
Die Sache ist trotzdem nicht ohne, denn eine EXE-Datei über eine CA zu starten ist wie gesagt nicht schwierig. Verfügt die EXE über eine UI wird es schwieriger, denn wenn diese aus dem Server-Prozess aufgerufen wird, landet sie im Desktop 0, wo sie aber nichts zu suchen hat und nicht (immer) dargestellt wird. Zudem verstößt das gegen Design-Richtlinien des MSI. Denn wird eine Silent-Installation durchgeführt, würde die EXE (mit UI) trotzdem ausgeführt, was nicht gut ist. Vom Grundsatz her müsste der Aufruf in die InstallUISequence, so dass wir einen Aufruf nur bei Reduced- und Full-UI haben; allerdings dann nur mit Standard-Benutzerrechten.

 

LG

Andreas


Andreas Kerl

Inside Windows Installer 4.5
ISBN 3-86645-431-7


RaveKev

RaveKev
  • Full Members
  • 7 posts

Posted 04 July 2013 - 14:17

Hallo zusammen,

 

heute war der letzte Tag unserer Schulung, und Martin Aigner (schönen Gruß von ihm) hat die Lösung gefunden.

 

Das Problem stand an 3 stellen:

<CustomAction Id="LaunchInstaller"
         FileKey="file_Software_Installer_0"
         ExeCommand=""
         Execute="immediate"
         Impersonate="yes"
         Return="asyncNoWait" />

    <InstallExecuteSequence>
      <Custom Action="LaunchInstaller" After="InstallFinalize"/>
    </InstallExecuteSequence>
  • Execute musste auf deferred
  • Impersonate auf no
  • Custom auf Before="InstallFinalize"

gesetzt werden.

 

Nun wird meine Applikation auch nach dem durchlauf des MSI gestartet.

 

Danke für eure Hilfe,

Kevin