Я столкнулся с этой проблемой при попытке построить MSM. По-видимому, свойства модуля (и все идентификаторы в этом отношении) переименовываются во время генерации модуля путем добавления GUID модуля в конце его имени. Например, свойство «MY_PROPERTY» переименовывается в «MY_PROPERTY.803A3089_928F_46F1_BBAE_CBD39A7D6A72» (при условии, что 803A3089-928F-46F1-BBAE-CBD39A7D6A72 — это GUID модуля). Я считаю, что это механизм, используемый для предотвращения конфликтов между несколькими модулями, пытающимися использовать идентификаторы с одним и тем же именем.
Из MSM мне нужно вызвать пользовательское действие DLL, которое требует, чтобы определенное свойство было установлено с некоторым значением (давайте назовем его «THE_PROPERTY»). Проблема в том, что THE_PROPERTY переименовывается, как описано выше, в THE_PROPERTY.803A3089_928F_46F1_BBAE_CBD39A7D6A72, поэтому пользовательское действие никогда не находит свойство и завершается ошибкой.
Есть ли способ решить эту проблему? Я думал об изменении пользовательского действия, чтобы оно пыталось выяснить (каким-то образом) GUID модуля, из которого оно вызывается. Одним из способов сделать это может быть просмотр имени текущего действия, которое также должно включать GUID. Но могу ли я получить имя текущего действия из пользовательского действия? Можете ли вы придумать другое решение?
Спасибо!