Advanced Installer VSTO插件Per Machine安装无法加载问题
VSTO Per-Machine 安装加载失败的配置错误排查
你当前的配置存在3个核心问题,是用Advanced Installer打包VSTO全局安装时的高频踩坑点:
- 注册表路径没有随安装类型切换同步修改:Advanced Installer的VSTO打包向导默认生成的是Per User模式的注册表配置,根路径指向
HKEY_CURRENT_USER,你手动把安装类型切到Per Machine时,工具不会自动把这些注册表条目迁移到HKEY_LOCAL_MACHINE对应路径下,这就是你安装后HKLM下找不到对应加载项条目的直接原因。你现在的配置只是改了安装范围开关,注册表项还停留在HKCU的配置逻辑里。 - 没有处理32/64位注册表视图重定向:MS Project的VSTO加载项注册表路径和Office的位数强相关,和系统位数无关:
- 64位版本Project、32位系统下的32位Project:加载项条目需要写到
HKLM\Software\Microsoft\Office\MS Project\Addins\<你的加载项ProgID> - 64位系统下的32位版本Project:加载项条目需要写到
HKLM\Software\Wow6432Node\Microsoft\Office\MS Project\Addins\<你的加载项ProgID>
如果你没有在Advanced Installer里明确标记注册表项对应的写入视图,32位安装包会被系统自动重定向到Wow6432Node路径,64位Project读不到对应条目,就会判定加载项不存在。
- 64位版本Project、32位系统下的32位Project:加载项条目需要写到
- 权限和路径配置不符合全局安装要求:
- HKLM下的加载项注册表项默认需要给所有本地用户分配读取权限,如果你没开权限继承,普通用户账号读不到注册表值,Office会直接屏蔽该加载项
Manifest注册表值指向的.vsto文件必须放到Program Files/Program Files (x86)这类全局可读的目录,不能放在用户个人目录下,值末尾必须加|vstolocal后缀,否则VSTO运行时不会识别为本地安装的加载项。
修复步骤
- 删除当前配置里所有HKCU节点下和该VSTO加载项相关的注册表条目
- 根据你要兼容的Project版本位数,在对应HKLM路径下新建加载项注册表项,必须包含4个标准值:
Description(字符串值):加载项功能描述FriendlyName(字符串值):加载项在COM列表里的显示名称LoadBehavior(DWORD值):设置为3,表示启动时自动加载Manifest(字符串值):填写安装后.vsto文件的完整绝对路径,末尾追加|vstolocal,例:C:\Program Files\你的插件目录\插件名.vsto|vstolocal
- 选中你新建的HKLM加载项注册表节点,在权限设置里给本地
Users组分配读取权限,确保所有登录用户都能访问该条目 - 在安装包属性里确认:如果要兼容32位Project,开启32/64位双视图注册表写入支持,不要硬编码单一路径;插件所有文件都安装到全局程序目录,不要使用
%APPDATA%这类用户专属路径变量。 - 测试时使用标准用户账号验证,不要只用管理员账号测试——管理员账号能读取的注册表项和路径,普通用户不一定有权限访问。
快速验证方法:安装完成后直接打开注册表编辑器,手动定位到你配置的HKLM Addins路径,确认条目存在、Manifest路径和实际文件位置完全一致,再打开Project的COM加载项列表,就能看到对应插件正常加载。
内容的提问来源于stack exchange,提问作者Kenny Arnold
相关产品推荐
相关产品推荐

