[Vorweg: aktuell benutze ich InstallShield DevStudio9, ich habe die Frage allerdings hier gepostet, weil ich nicht auf Lösungen mit DevStudio beschränkt bin]
Die Anforderung ist ganz simpel: Alles soll möglich sein. Aber irgendwie glaube ich, dass sich hier verschiedene Konzepte gegenseitig ausschließen. Die konkreten Wünsche:
Wir haben eine Reihe von Produkten, die der Kunde kaufen kann. Alle Produkte, die er kauft sollen durch Starten einer Setup.exe installiert werden. Der Verkäufer kann bestimmen, welche Produkte der Kunde erhält und ihm eine entsprechende CD zusammenstellen. Außerdem soll der Kunde die Möglichkeit haben, Produkte nachträglich zu kaufen und dazu zu installieren. Das ganze soll natürlich vom Aufwand her sehr einfach und übersichtlich gehalten werden, Updates, Patches und neue Versionen sollen problemlos und einfach erstellt werden können...

Bisher habe ich folgenden Ansatz gewählt: Die einzelnen Produkte habe ich in jeweils ein Feature verpackt, dieses bekommt ein release flag. Für jede gewünschte Kombination habe ich nun ein Release erstellt, in dem ich die release flags der benötigten Features gesetzt habe.

Damit habe ich einen Teil der Anforderung schon mal erschlagen: es müssen nur geänderte Dateien ausgetauscht werden, alle Releases neu erstellt werden, schon habe ich alle Kombinationen neu erstellt. Der Verkäufer wählt nun das entsprechende Release aus und brennt es auf CD. Der Kunde hat zudem noch die Möglichkeit, bestimmte Features nicht zu installieren, andere sind obligatorisch.
Was jedoch aus Prinzip nicht geht ist das "Nachkaufen" von Features. Hat man ein bestehendes Release installiert kann man neue Features auch dann nicht installieren, wenn man ein Release drüber installiert, das diese Features enthält (das habe ich jedenfalls durch Testen herausgefunden, vielleicht gibt es ja doch Möglichkeiten?).
Ein weiterer Nachteil dieses Vorgehens: Zur Zeit habe ich 7 Releases, das Erstellen dieser Installation dauert schon eine ganze Zeit. Für die Zukunft sind zwei weitere zusätzliche Komponenten geplant, was die Anzahl der Releases noch einmal vervierfacht, also habe ich dann 28 Versionen einer Installation. Das Erstellen ist einfach, aber wer soll das noch alles testen? Und wie lange dauert das Erstellen von 28 Releases? Alles in allem keine ideale Lösung.

Daher hier mein Aufruf: Wer weiß eine bessere Lösung, am besten natürlich die optimale Lösung

Anmerkung: Ich benötige Mehrsprachigkeit, verschiedene Custom Actions, eine einheitliche Oberfläche und minimale Benutzerinteraktion - maximal die Standard-Dialoge des Windows Installers. Alternativen zu DevStudio sind gerne gesehen!
Ciao, Hensz