Custom Action eines Setup-Projektes wird nicht ausgeführt


Thomas Wölfer
Thomas Wölfer

04. Februar 2010


Das hat mich nun etwa 2 Tage gekostet - vielleicht hilft es ja mal jemand anderem... Ich hatte folgendes Problem: In meinem VS (2008) Setup-Projekt gab es eine Custom Action (als C# Projekt) Assembly - und die wurd beim testen des Setups auf einer Maschine einfach nicht ausgeführt. (Das Ding schreibt einen Event-Log Eintrag, mit dem das einfach nachzuvollziehen war.)

Grund: Der MSI scheint bei Custom Actions Assemblies ein etwas anderes Verhalten an den Tag zu legen, als bei "normalen" Assemblies. Im Normalfall reicht es bei einer Managed Assembly aus, das die neue Version der Assembly eine höhere AssemblyVersion (per AssemblyVersionAttribute [1.0.0.*] einfach zu handhaben) hat, als eine auf dem Zielsystem bereits vorliegende Assembly. Hat die "neue" eine höhere Version, wird die "ältere" ersetzt. (Bei nativen Images muss die FileVersion höher sein, damit die ersetzt werden.)

Bei einer Assembly die eine Custom Action enthält scheint es nicht auszureichen die AssemblyVersion Notation [1.0.0.*] zu verwenden - auch wenn die Version hochgezählt wird, ersetzt MSI eine bereits vorliegende DLL mit gleichem Namen nicht. Offenbar muss man bei Custom Actions auf jeden Fall auch eine höhere FileVersion (per AssemblyFileVersionAttribute zu vergeben) haben. Ist das der Fall, wird die "ältere" DLL dann auch durch die neuere ersetzt - und im Zuge der Ausführung der Custom Actions dann auch tatsächlich aufgerufen.

Wäre schön gewesen, wenn das irgendwo in der Dokumentation zu finden gewesen wäre. :-(