运行msi时如何运行.reg文件?

时间:2013-09-26 15:08:24

标签: wix installer windows-installer installshield

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

enter image description here

安装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并编辑它时,我看到如下, enter image description here

如何获取msi,如上图所示?

1 个答案:

答案 0 :(得分:4)

MSI在Registry table中表达注册数据。在安装过程中,系统会确定要安装哪些功能和组件,以便执行哪个注册表添加,更新和删除。实际工作由WriteRegistryValuesRemoveRegistryValues操作执行。

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