2010-07-16 169 views
1

我一直在試驗自定義操作,以便在安裝時加密部分的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文件

回答