I tried doing as you said but it didn't make a big difference.
I see now that in my .wxs file every CA creates it's own binary and than each CA calls it's own binary (see BinaryKey) like his:
<Binary Id="Action1" SourceFile="CustomAction.CA.dll" />
....
....
The same for all the CAs.
<CustomAction Id="Set_Action1" Property="Action1 " Value="APP_NAME=-------------;SERVICE_NAME=------------;INSTALLDIR=[INSTALLDIR];UILevel=[UILevel]" />
....
....
The same for all the CAs.
It seems like this is totally incorrect, do you have any idea how to change it? I mean that the dll should be called only once and not for every CA again and again, creating one binary for the dll
I see now that in my .wxs file every CA creates it's own binary and than each CA calls it's own binary (see BinaryKey) like his:
<Binary Id="Action1" SourceFile="CustomAction.CA.dll" />
<Binary Id="Action2" SourceFile="CustomAction.CA.dll" />
<Binary Id="Action3" SourceFile="CustomAction.CA.dll" />
<Binary Id="Action4" SourceFile="CustomAction.CA.dll" />
<Binary Id="Action5" SourceFile="CustomAction.CA.dll" />
<Binary Id="Action6" SourceFile="CustomAction.CA.dll" />
<Binary Id="Action7" SourceFile="%this%.CA.dll" />
........
....
The same for all the CAs.
<CustomAction Id="Set_Action1" Property="Action1 " Value="APP_NAME=-------------;SERVICE_NAME=------------;INSTALLDIR=[INSTALLDIR];UILevel=[UILevel]" />
<CustomAction Id="Action1 " BinaryKey="Action1" DllEntry="????????" Impersonate="no" Execute="deferred" Return="check" />
<CustomAction Id="Action2 " BinaryKey="Action2" DllEntry="?????????" Impersonate="no" Execute="rollback" Return="check" />
<CustomAction Id="Action3 " BinaryKey="Action3" DllEntry="??????????" Impersonate="no" Execute="deferred" Return="check" />
…
....
....
The same for all the CAs.
It seems like this is totally incorrect, do you have any idea how to change it? I mean that the dll should be called only once and not for every CA again and again, creating one binary for the dll