使用Windows Installer部署COM加载项的困难

时间:2015-08-05 14:48:46

标签: vb.net excel visual-studio-2012 com windows-installer

我在Visual Studio 2012中创建了一个COM加载项,当我在我的机器上编译并运行它时,它运行得很好。当我尝试使用我创建的Windows安装程序来安装加载项时,会出现问题。我正在尝试将此加载​​项安装到多台计算机上,我想弄清楚问题出在安装程序上。

当我尝试使用Excel从COM加载项调用Sub时,会抛出超出范围的'下标'在第二行。 Sub连接到SQL服务器,基于单元数据执行查询,并返回结果。我查看了Excel中的加载项,它已安装而非非活动/禁用。如果我在我的机器上编译项目,那么相同的代码就可以正常工作,而不是在我使用安装程序安装加载项时。

Dim com as COMAddIn
Set com = Application.COMAddIns("SQL")  <----
com.Object.ConStr

我按照本指南安装了安装程序:

https://msdn.microsoft.com/en-us/library/Cc442767.aspx

我执行了以下操作以使安装程序运行(只是上述文章的摘要):

  • 将主要输出,.vsto和dll.manifest文件添加到 申请文件
  • 添加了.NET Framework 4.5(完整版)和Visual Studio 2010工具 Office Runtime作为先决条件
  • 设置INSTALLDIR
  • 指定应用程序应部署到当前用户
  • 告知安装程序以创建以下注册表路径

    HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\JACOB.SQL
    
  • 创建以下注册表项

    Description   SQL
    FriendlyName  SQL
    LoadBehavior  3
    Manifest      file:///[INSTALLDIR]SQL.vsto|vstolocal
    
  • 将Build设置为SingleImage
  • 将InstallShield先决条件设置为从Web&#39;
  • 下载
  • 将Active solution配置设置为SingleImage
  • 将安装程序的配置设置为SingleImage
  • 构建安装程序

我确保从Excel中卸载我的项目的编译版本,然后转到以下文件路径并运行setup.exe。

%Visual Studio 2012%\Projects\SQL\Setup1\SQL_Setup\Express\SingleImage\
DiskImages\DISK1

安装程序完成后,我运行了与上面相同的代码,并返回了超出范围的&#39;下标&#39;错误。正如我之前所说,如果我编译代码,相同的代码就可以工作。

Dim com as COMAddIn
Set com = Application.COMAddIns("SQL")  <----
com.Object.ConStr

我已经研究过这个问题,并且大部分都是空白的。我发现我可能需要DllRegisterServer / DllUnregisterServer方法将我的dll添加到Regsvr32的注册表中,但我不知道如何编写这些方法。如果编译的项目在没有这些方法的情况下工作,我也不知道这可能是什么问题。也许安装程序会跳过一步?

任何帮助都会非常感激。谢谢!

0 个答案:

没有答案