我有一个安装包(基于MSI),它试图注册一个dll文件以用作Windows资源管理器栏(Internet Explorer工具栏)。
自定义操作定义如下:
[SystemFolder]\regsvr32.exe /s "pathtodllhere"
MSI日志的输出:
CustomAction SystemFolder_2返回实际的错误代码5.错误 1722.此Windows Installer程序包存在问题。作为设置的一部分运行的程序没有按预期完成。 Action SystemFolder_2, location:C:\ Windows \ SysWOW64 \,命令:regsvr32.exe / s“C:\ Program 文件(x86)\ Test Install \ test.dll“
MSI(s)(10:F4):产品:测试安装 - 错误1722.有一个 此Windows Installer程序包的问题。一个程序作为一部分运行 设置未按预期完成。 Action SystemFolder_2,位置: C:\ Windows \ SysWOW64 \,命令:regsvr32.exe / s“C:\ Program Files (x86)\ Test Install \ test.dll“
迄今为止我的测试/想法的短暂停顿:
希望我在这里展示我的研究,不要浪费任何人的时间!
答案 0 :(得分:3)
最佳实践解决方案(正如您所提到的)是从组件中提取注册表项并使用msi将它们写入注册表。
<强>背景强>
Regsvr32需要管理员权限和提升权限确认才能在64位Windows 7下注册COM组件,但msiexec不知道请求提升自定义操作的权限。
您可以使用“打开方式...”在组件上运行C:\ Windows \ SysWOW64 \ regsvr32.exe来测试此要求(这将失败)。如果您为注册创建批处理文件,然后“以管理员身份运行”,则组件将成功注册。