1

我一直在尝试自定义操作,以便在安装时加密部分 App.Config 文件(根据how-do-i-encrypt-app-config-file-sections-during-install-with-wix)我有基本的 CA 进程正常工作,但我对 Wix/msi 安装的理解缺少一些东西。

我的 CA Wix 配置看起来有点像

<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 属性提供不同的值。如果我要发明自己的 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 文件

4

1 回答 1

0

那么在 SO 完全不感兴趣之后,我想我在另一个 SO 问题中找到了我的解决方案:我如何将 msiexec 属性传递给 wix c 自定义操作

于 2010-07-20T20:37:06.860 回答