我有一个用于 32 位应用程序的安装程序包(使用 MakeMsi 构建,最初用于 Windows XP,并且从那时起进行了简单维护),它无法在现代(64 位)Windows 系统(7、8、10)上注册 COM 服务器. 这是我在尝试正常安装我的 MSI 时看到的:
应用程序错误
模块 xyz 中的异常 EOleSysError 位于 000F0B01。访问 OLE 注册表时出错。
如果我将 MSI 带入兼容模式Windows 以前的版本,COM 服务器注册成功。由于不知何故“它起作用了”,到目前为止,我没有花太多时间来探索原因。但最后,我已经筋疲力尽地一次又一次地记住我们的客户(有时也是我)这个前提条件,所以我希望解决这个问题。
注册(和取消注册)是通过CustomAction完成的,正如我使用 Orca 看到的那样:
"[INSTALLDIR.MYAPP]\placeholder.exe" -regserver
"[INSTALLDIR.MYAPP]\placeholder.exe" -unregserver
对于这些条目中的每一个,Type
is1122
和Source
is INSTALLDIR.MYAPP
。
我可以想象COM服务器在安装过程中是在权限不足的情况下启动的,但是安装程序不是以管理员权限自动运行的吗?我的意思是,当我(作为标准用户)通过双击启动安装程序时,它会在实际安装发生之前显示 UAC 提示。为什么 COM 服务器没有以提升的注册和注销权限运行?很混乱...
我应该如何更改我的 MSI 以使 Windows 安装程序成功处理它?