Я экспериментировал с настраиваемыми действиями, чтобы зашифровать часть файла App.Config при установке (согласно how-do-i-encrypt-app-config-file-section-during-install-with-wix) У меня работает базовый процесс CA но мне что-то не хватает в моем понимании установок Wix / msi.
Моя конфигурация Wix для CA немного похожа на
<Binary Id="ENCRYPTSECTIONCADLL"
SourceFile="(path to CA DLL)"/>
<Property Id="APPCONFIGPATH" Value="(Path to Exe file)" />
<Property Id="SECTIONTOENCRYPT" Value="(Section of App.Config to Encrypt)" />
<CustomAction Id="ENCRYPT_SECTION"
BinaryKey="ENCRYPTSECTIONCADLL"
DllEntry="EncryptConfig"
Execute="immediate"
Return="check"
HideTarget="no"
Impersonate="no" />
<InstallExecuteSequence>
<Custom Action="ENCRYPT_SECTION" After="InstallFinalize" />
</InstallExecuteSequence>
А внутри ЦС есть явные ссылки на
session["APPCONFIGPATH"]
session["SECTIONTOENCRYPT"]
А теперь вопрос. Я хочу выполнить свой CA дважды, но передать другое значение свойствам SECTIONTOENCRYPT, которые передаются в него. Если бы мне пришлось изобрести собственный синтаксис Wix, я бы выразил свои желания так:
<InstallExecuteSequence>
<Custom Action="ENCRYPT_SECTION"
After="InstallFinalize"
APPCONFIGPATH = "(Path to Exe File)"
SECTIONTOENCRYPT = "(Section #1)" />
<Custom Action="ENCRYPT_SECTION"
After="InstallFinalize"
APPCONFIGPATH = "(Path to Exe File)"
SECTIONTOENCRYPT = "(Section #2)" />
</InstallExecuteSequence>
Я знаю, что это просто фантазия с моей стороны, но, похоже, я не понимаю, как выразить это в декларативном формате Wix. Единственная верная идея, которую я могу придумать, - это объединить строки SECTIONTOENCRYPT и проанализировать их внутри CA. Это могло бы сработать, но мне это просто не нравится - хотя, возможно, это потому, что у меня нет опыта в этой области.
Может ли кто-нибудь предложить лучший способ делать что-то?
Изменить
Меня просто поразило, что в основном это используется, когда у меня есть один установщик Wix, который устанавливает несколько программ, в которых я хочу зашифровать файл App.Config.