Запустить настраиваемое действие с повышенными разрешениями после InstallFinalize

Мне нужно зашифровать строку подключения в файле .config приложения, которое будет использоваться в наших лабораториях. Для этого я следовал инструкциям, приведенным здесь http://boettr.wordpress.com/2010/05/20/simple-way-to-encrypt-app-config-through-wix-3-5-and-vs2010-using-c-code/

Отличная работа, пока я не устанавливаю приложение ни в каталоги Program Files, ни в Program Files (x86). Я не получаю никаких ошибок, но файл .config также никогда не шифруется. Я попытался установить флаг олицетворения, а также настроить его на отложенный запуск, но получил ошибку при использовании олицетворения, которая должна была произойти после InstallInitialize и до InstallFinalize. Однако настраиваемое действие не будет работать, если оно не будет запущено после InstallFinalize.

Код из моего product.wxs

<InstallExecuteSequence>
  <Custom Action="LaunchFile" After="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>
<Fragment>
<CustomAction Id="LaunchFile" FileKey="Encryption" ExeCommand="[INSTALLDIR]"/>

I can run the encryption.exe after the install and it works but I do get the UAC warning before it actually executes. Any Help would be appreciated.


person Mike Horton    schedule 08.04.2014    source источник


Ответы (1)


Выполнение после "InstallFiles" как отложенного должно дать вам необходимые разрешения и гарантировать, что файл там.

<InstallExecuteSequence>
  <Custom Action="LaunchFile" After="InstallFiles" Impersonate="no" Execute="deferred">NOT Installed</Custom>
</InstallExecuteSequence>
person Rick Bowerman    schedule 08.04.2014
comment
Спасибо, Рик. Мне пришлось изменить выполнение на фиксацию вместо отложенного, но ответом было изменение InstallFinalize на InstallFiles. - person Mike Horton; 08.04.2014
comment
Custom больше не принимает атрибуты Impersonate или Execute. Определите их в LaunchFile CustomAction. - person ; 12.05.2015