Frage

Wir haben eine MSI wir in WiX 3.5.2030.0 und Targeting Windows Installer 4.0 (für MSIUSEREALADMINDETECTION Unterstützung) verfasst haben. Wir haben eine Eigenschaft, dass wir in der MSI definiert haben Verwendung eines Bootstrap-Programm zu erzwingen (ich sage „erzwingen“, aber es ist wirklich „sehr stark fördern“ natürlich):

<Property Id="SETUPEXE"
          Secure="yes" />
<Condition Message="You must run the MSI through the setup program; you cannot run it directly.">
  SETUPEXE = 1
</Condition>

Wenn wir die produzierten MSI als neues laufen installieren, alles funktioniert. Wenn wir es als Upgrade laufen, jedoch bestand die Eigenschaft, um das Installationsprogramm scheint an einem gewissen Punkt „verloren“ zu werden. Das Protokoll zeigt die folgenden relevanten Einträge:

MSI (s) (2C:8C) [11:27:41:648]: Command Line: SETUPEXE=1 <other properties>

MSI (s) (2C:8C) [11:27:43:055]: PROPERTY CHANGE: Adding SETUPEXE property. Its value is '1'.

MSI (s) (2C:CC) [11:28:11:038]: PROPERTY CHANGE: Adding NETFRAMEWORK20INSTALLROOTDIR property. Its value is 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\'.
Action ended 11:28:11: AppSearch. Return value 1.
MSI (s) (2C:CC) [11:28:11:147]: Doing action: LaunchConditions
Action start 11:28:11: LaunchConditions.
MSI (s) (2C:CC) [11:28:33:662]: Product: <product> -- You must run the MSI through the setup program; you cannot run it directly.

Action ended 11:28:33: LaunchConditions. Return value 3.
Action ended 11:28:33: INSTALL. Return value 3.

Property(N): SETUPEXE = 0

Property(N): SecureCustomProperties = NETFRAMEWORK20INSTALLROOTDIR;NETFRAMEWORK35;NETFRAMEWORK35_SP_LEVEL;NEWERVERSIONDETECTED;OLDERVERSIONBEINGUPGRADED;SETUPEXE

Property(S): SecureCustomProperties = NETFRAMEWORK20INSTALLROOTDIR;NETFRAMEWORK35;NETFRAMEWORK35_SP_LEVEL;NEWERVERSIONDETECTED;OLDERVERSIONBEINGUPGRADED;SETUPEXE

Property(S): SETUPEXE = 1

Ich habe einige Benutzer über dieses und schaute auf die Log-in WiLogUtl getan und haben zumindest herausgefunden, dass Property(N) eine „verschachtelte“ Eigenschaft gibt, aber ich weiß nicht, was die Verschachtelung ist, wenn ich das MSI renne direkt durch msiexec. Dann, ich weiß nicht, warum die verschachtelte Eigenschaft ist nicht richtig eingestellt, wenn die Client- und Server-Werte korrekt sind. Wie behebe ich das?

War es hilfreich?

Lösung

Ich würde denken Sie daran, dass die Bedingung (oder je nach Anwendungsfall) zu ändern

<Condition Message="Blah blah blah">SETUPEXE or Installed</Condition> 

mir eine ähnliche Sache (Installshield setup.exe übergibt eine SETUPEXEDIR Eigenschaft von Standard) und es ist nicht eine schreckliche Sache zu tun, wenn Sie sicher, dass Ihr Installateur machen wollen wurde durch das Bootstrap-Programm läuft eine Chance, um sicherzustellen, prereqs mußte installiert werden . Aber für die Wartung / Reparatur / Deinstallation Szenarien, die Sie wahrscheinlich nicht wollen, dass die setup.exe erfordern ausgeführt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top