如何重用Wix自定义操作?

问题描述:

我一直在试验自定义操作,以便在安装时加密部分的App.Config文件(根据how-do-i-encrypt-app-config-file-sections-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> 

和CA里面是

session["APPCONFIGPATH"] 
session["SECTIONTOENCRYPT"] 

现在我的问题明确提及。我想要做的是执行我的CA两次,但提供一个不同的值给它的SECTIONTOENCRYPT属性。如果我是去创造我自己的维克斯语法我想表达我的愿望是:

<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> 

我知道这是对我而言只是幻想,但我似乎无法让我的头围绕在维克斯的声明表达这种格式。我能想出的唯一有效的想法是连接SECTIONTOENCRYPT字符串并将它们解析出CA.这会奏效,但它对我来说并不合适 - 尽管这可能是因为我在这方面没有任何经验。

任何人都可以提出一个更好的做事方式吗?

编辑

它只是让我吃惊的这一主要用途的情况是,当我有一个单一的维克斯安装程序,安装在我要加密多个程序App.config文件

好在回复缺乏兴趣后,我认为我在另一个SO问题中找到了我的解决方案:how do i pass msiexec properties to a wix c custom action