Лучше всего, чтобы хранить «служебную» версию где-то в реестре, искать это значение реестра во время обновления и запускать свой CA, если newver> oldver (и CA также должен обновить указанное значение реестра до newver)
Обратите внимание, что Пользовательские действия (как правило) - это признание ошибки . Я всегда стараюсь отделить конфигурационную часть установки до этапа предварительной установки (для сисадминов, выполняющих развертывание) или этапа после установки (для интерактивных установок) - часто это отдельный исполняемый файл.
Декларативные установки без пользовательских действий намного более надежны - если вы сможете выяснить, как переписать службу, чтобы ваши настраиваемые действия больше не требовались, вам будет намного лучше в долгосрочной перспективе термин (это не помогает, когда вы находитесь под давлением, чтобы выпустить сейчас, но это о чем подумать для будущих выпусков)