在InstallFinalize之后运行具有提升权限的自定义操作

时间:2014-04-08 01:43:39

标签: wix wix3.8

我需要加密应用程序的.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文件也从未加密。我尝试设置impersonate标志并将其设置为运行延迟但在使用模拟时收到错误它必须在InstallInitialize之后和InstallFinalize之前发生。但是,除非在InstallFinalize之后运行,否则自定义操作将无效。

我的产品代码.wxs

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

我可以在安装后运行encryption.exe并且它可以工作,但我确实在它实际执行之前得到了UAC警告。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

在“InstallFiles”之后执行延期应该可以获得所需的权限并保证文件在那里。

<InstallExecuteSequence>
  <Custom Action="LaunchFile" After="InstallFiles" Impersonate="no" Execute="deferred">NOT Installed</Custom>
</InstallExecuteSequence>