1

我试图了解我的 setup.msi 在安装时如何插入注册表值。在 Orca 编辑器中,我看到的是这样的,

在此处输入图像描述

安装 msi 后,在我看到的日志文件中,

MSI (s) (A8:B4) [16:27:28:674]: Executing op: ComponentRegister(ComponentId={45667B7F-9DC7-43B7-BE9E-3215ED1B1985},KeyPath=02:\SOFTWARE\myCompany\MySolution\Plugins\MyProduct\ProductCode,State=3,,Disk=1,SharedDllRefCount=0,BinaryType=0)

我想做这个机制的逆向工程,谁能帮我理解这个?我想使用 WIX 重新创建相同的内容,所以我只是尝试如下

 <Component Id="RegistryEntries" Guid="*">
            <RegistryKey Root="HKLM"
                         Key="Software\Microsoft\MyCompany"
                  Action="createAndRemoveOnUninstall">
              <RegistryValue Type="string" Name="MyApp" Value="[INSTALLLOCATION]" KeyPath="yes"/>
              <RegistryValue Type="string" Name="Configuration Files" Value="[INSTALLLOCATIONCONFIG]"/>
              <RegistryValue Type="string" Name="Configuration Files1" Value="[INSTALLLOCATIONCONFIG1]"/>
            </RegistryKey>
          </Component>

当我构建 msi 并对其进行编辑 Orca 时,我看到如下所示, 在此处输入图像描述

如上图所示,我应该怎么做才能获得 msi?

4

1 回答 1

4

MSI 在Registry 表中表示注册表数据。在安装过程中,系统确定正在安装哪些功能和组件,因此要执行哪些注册表添加、更新和删除。实际工作由WriteRegistryValuesRemoveRegistryValues操作执行。

在安装过程中“执行 reg 文件”不是最佳做法,因为它不在进程中并且 MSI 无法管理更改。而是使用WiX Heat 工具将注册表文件的内容收集到 wix xml 源中,以便包含在您的安装程序中。

于 2013-09-26T15:30:24.160 回答