代码之家  ›  专栏  ›  技术社区  ›  Peter M

如何重用Wix自定义操作?

  •  1
  • Peter M  · 技术社区  · 15 年前

    为了在安装时加密App.Config文件的一部分(根据 how-do-i-encrypt-app-config-file-sections-during-install-with-wix

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

    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的声明格式来表达这一点。我能想到的唯一有效的想法是将部分连接到加密字符串,并在CA内部解析它们。这是可行的,但我觉得这样做不对——尽管这可能是因为我在这方面没有任何经验。

    有人能提出更好的做事方法吗?

    编辑

    我突然想到,这种方法的主要用途是当我有一个Wix安装程序安装多个程序时,我想在其中加密App.Config文件

    1 回复  |  直到 8 年前