Большинство людей склонны избегать таблицы lockPermissions, поскольку она не является аддитивной, то есть она перезапишет ваши текущие разрешения (с точки зрения управляемой среды это плохо). Я бы предложил вам использовать инструмент, поддерживающий наследование ACL , такой как SUBINACL или SETACL, или один из многих инструментов ACL.
В связи с тем, что ваши предыдущие посты провалились, есть несколько причин. Есть четыре места, где вы можете поместить свои пользовательские действия (CA): пользовательский интерфейс, немедленный, отложенный и фиксировать / откат.
Вам необходим ваш ЦС для установки разрешений в отложенной последовательности, поскольку файлы отсутствуют до середины отложенной последовательности. Таким образом, все предшествующее потерпит неудачу.
- Ваша установка выполняется немедленно (поэтому не удастся)
- Ваша настройка в последовательности 1 (которую невозможно отложить, поэтому произойдет сбой)
Вам необходимо добавить атрибут Execute="Deferred"
и изменить последовательность с «1» на:
<Custom Action="CallCmd" Execute="Deferred" Before="InstallFinalize" />
Это будет гарантировать, что это будет сделано после установки файлов, но до окончания отложенной фазы (нужное место).
Я бы также предложил вам вызывать EXE-файл напрямую, а не из пакетного файла. Запустится служба установки и файл EXE прямо в нужном вам контексте. Использование командного файла запустит командный файл в правильном контексте и потенциально потеряет контекст для нежелательной учетной записи во время выполнения.