Ich würde gern ein Setup erstellen, mit dem mehrere (zusammen gehörige) Anwendungen installiert werden. Ich hab also die Anwendungen, mit anderen benötigten Files schön in Features (*) aufgeteilt, das Ganze sieht dann so aus:
* application1
- component1
* application2
- component2
* helpfiles
-component3 (Help-File für app1)
-component4 (Help-File für app2)
-component5 (sonstige Help-Files, werden immer installiert)
So, nun versuche ich, falls der User eine Installation der Help-Files wünscht, nur die Help Files passend zur jeweiligen Anwendung zu installieren. Falls der User nur app1 und nicht app2 und die Help-Files installiert, so soll er comp1, comp3 und comp5 bekommen.
Ich habe es mit den Conditions bei den Components versucht:
&app1=3 or (!app1=3 and not &app1=2)
oder einfach:
&app1=3
Aber das funktioniert nicht. Ich hab in der Online-Hilfe gelesen, dass diese conditional statements erst nach der CostFinalize Action den richtigen Wert besitzen. Ich hab das überprüft mit einer Message-Box (user32.dll, MessageBoxA als CustomAction), die mit den gleichen Conditions *nach* CostFinalize aufgerufen wird und es funkioniert richtig. Nur wenn App1 und die Hilfe ausgewählt ist (in beliebiger Reihenfolge), dann kommt die MessageBox. Weiterhin hab ich versucht MsiSetComponentState manuell aufzurufen, um den Status auf INSTALLSTATE_LOCAL zu setzen, aber das hat nicht funkioniert.
Kann mir bitte jemand sagen, wie ich die Components für die Help-Files automatisch installieren kann? Gibt es da vielleicht eine einfachere und schönere Lösung für ein solches Problem?
Danke im Voraus!
Gruß
Marsyas
Edited by Marsyas, 12 January 2006 - 15:56.