2010-11-25 12 views
0

ich das nächste Problem habe, definiere ich eine neue Eigenschaft:Installdir auf unbeaufsichtigte Installation

<Property Id="TEMP_DIR" Secure="yes" > 
    <RegistrySearch Id="TEMP_DIR" Root="HKLM" Key="SOFTWARE\$(Company)" Name="InstallDir" Type="directory"></RegistrySearch> 
</Property> 

Und dann definiere ich eine neue Komponente:

<Component Id="PerformAction" Guid="E2E4E3E5-FBEC-4051-B47B-9347B78105C2"> 
    <Condition><![CDATA[TEMP_DIR<>INSTALLDIR]]></Condition> 
     … 
</Component> 

Auf regelmäßige Installation der Eigenschaft ist richtig zugewiesen und die Bedingung funktioniert gut.

Bei einer unbeaufsichtigten Installation wird die Komponente immer installiert, event, wenn die Bedingung falsch sein sollte.

Auf der ausführlichen Protokoll es scheint, als ob beide Eigenschaften korrekt sind ...

Kommentar:

Nach einer weiteren Untersuchung und nach dem nächsten Link:

msdn.microsoft.com/en-us/library/aa368007%28VS.85%29.aspx

ich verstanden dass das INSTALLDIR erst nach der Aktion CostFinialize initialisiert wird und die Bedingungsfelder während dieser Aktion aktiviert oder deaktiviert werden Eigenschaft ist in dieser Phase leer ...

Haben Sie irgendwelche Ideen, wie Sie die Eigenschaft früher initialisieren?

Antwort

0

Ich würde vermuten, dass die Eigenschaft INSTALLDIR basierend auf Benutzereingaben irgendwo in der UI-Sequenz gesetzt wird, die nicht in der stillen Installation ausgeführt wird. Wenn dies der Fall ist, können Sie den Wert für INSTALLDIR als Parameter für msiexec.exe übergeben.

+0

Danke für Ihre Antwort, Sie haben Recht. Bitte sehen Sie meinen Kommentar ... – Hila

Verwandte Themen