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

我在Visual Studio 2012中创build了一个COM加载项,当我在我的机器上编译和运行它时,它完美地工作。 当我尝试使用我创build的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 Tools for Office Runtime作为先决条件
  • 设置INSTALLDIR
  • 指定应用程序应该部署到当前用户
  • 告诉安装程序创build以下registrypath

     HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\JACOB.SQL 
  • 创build了以下registry项

     Description SQL FriendlyName SQL LoadBehavior 3 Manifest file:///[INSTALLDIR]SQL.vsto|vstolocal 
  • 将生成设置为SingleImage
  • 将InstallShield先决条件设置为“从Web下载”
  • 将活动解决schemeconfiguration设置为SingleImage
  • 将安装程序的configuration设置为SingleImage
  • build立安装程序

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

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

安装程序完成后,我运行与上面相同的代码,并返回“下标超出范围”错误。 正如我前面所说,如果我编译代码,相同的代码工作。

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

我研究了这个问题可能是什么,而且大都是空白的。 我发现我可能需要DllRegisterServer / DllUnregisterServer方法来添加我的DLL到registry与Regsvr32,但我不知道如何编写这些方法。 如果编译的项目没有这些方法,我也不知道这可能是什么问题。 也许安装程序跳过一个步骤?

任何帮助将不胜感激。 谢谢!