Wix:在卸载时添加注册表项



我被要求在卸载/删除安装程序时恢复/写入注册表项。为此,我在卸载时通过自定义操作调用 .cmd 文件。这是它的代码:

set SSKey=HKLMSoftwareMyProductInstalled ModulesTestModule
reg.exe add "%SSKey%" /v AppName  /d TestModule /f /reg:32
reg.exe add "%SSKey%" /v Type /t REG_DWORD /d 7 /f /reg:32
reg.exe add "%SSKey%" /v AppName  /d TestModule /f /reg:64
reg.exe add "%SSKey%" /v Type /t REG_DWORD /d 7 /f /reg:64

下面是调用此 .cmd 文件的自定义操作代码段:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*" Name="RegOnUninstall" Language="1033" Version="1.0.0.0" Manufacturer="Testing" UpgradeCode="3dbec931-5475-40b3-a002-824c09aad36c">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated" />
    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate />
    <Feature Id="ProductFeature" Title="RegOnUninstall" Level="1">
      <ComponentRef Id="RSS" />
    </Feature>
    <Property Id="WixQuietExecCmdLine" Value="&quot;[#RSS.cmd]&quot; -RSS"/>
    <CustomAction Id="SS" BinaryKey="WixCA" DllEntry="WixQuietExec" Execute="deferred" Return="check"/>
    <InstallExecuteSequence>
      <Custom Action="SS" Before="RemoveFiles">Installed AND REMOVE</Custom>
    </InstallExecuteSequence>
 </Product>
  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="RegOnUninstall" >
          <Component Id="RSS" Guid="*" >
            <File Id="RSS.cmd" KeyPath="yes" Source="D:ScriptsRestSS.cmd"/>
          </Component>
        </Directory>
      </Directory>
    </Directory>
  </Fragment>

注意:此自定义操作位于WixUtilExtension中。

尽管安装程序正在使用提升的权限,但此脚本无法在 HKLM 中写入。由于此故障,安装程序无法从计算机中卸载。

如果我使用管理员权限在命令提示符下运行此 .cmd 脚本,它将正常工作。

我尝试编写托管自定义操作,但它面临类似的问题,即无法写入 HKLM。

我的主要目的是在卸载时写入注册表项。

任何帮助将不胜感激...谢谢

你可能正在写信给HKLM...32 位配置单元 HKLM\软件\Wow6432Node\My Product \My Company。

最新更新