我被要求在卸载/删除安装程序时恢复/写入注册表项。为此,我在卸载时通过自定义操作调用 .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=""[#RSS.cmd]" -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。