使用Wix MSI打包ActiveX控件

时间:2014-10-04 06:01:34

标签: wix installer windows-installer activex

我需要使用Wix创建MSI。我的应用程序有 Active X控件。当任何用户连接或访问Web上的URL时,我的应用程序需要安装在用户计算机中。 我需要安装的路径是C:\Windows\Downloaded Program Files\CONFLICT.xx,此文件夹应包含文件ATL80.dll,app.dll,MSVCP80.dll MSVCR80.dll。 我看到很少的文章,但与他们混淆。请让我知道如何开始这个以及我需要遵循哪些步骤来制作MSI。

2 个答案:

答案 0 :(得分:1)

还有更多内容:Packaging ActiveX Controls

基本上网页将通过 CODEBASE网址请求下载并安装已签名的电子邮件,如下所示:

(上面链接的Microsoft文章中的示例)

<OBJECT CLASSID="clsid:dcf0768D-ba7a-101a-b57a-0000c0c3ed5f"
    CODEBASE="http://webserver/time.cab"
    ALIGN="CENTER" WIDTH=270 HEIGHT=26 ID="T1"><PARAM NAME="Interval" VALUE=1000>
    <PARAM NAME="Enabled" VALUE=1></OBJECT>

下载 time.cab 并安装(标准Microsoft cab安装/提取)。下次打开网页时,Active X控件应按预期工作。这是正常情况(需要管理员权限才能使用)。此处的成功安装可以捕获并打包为MSI。但是,由于完成安装所涉及的所有证书,因此需要进行大量清理。我记得,MSI中不需要任何证书,因为MSI以管理员/提升权限运行并直接在文件夹中转储文件。如果你问我这是一个安全问题,但这些出租车很少以这种方式部署。未签名的cab文件虽然无法正常工作(除非IE是自定义的)。

在此用户案例中创建的 CONFLICT文件夹表示来自cab的已安装文件与网页指定和预期的文件版本之间存在差异。这会导致IE触发新的CAB下载。在C:\Windows\Downloaded Program Files\中发现相同的文件后,每次都会创建一个新的CONFLICT子文件夹,并且每次打开页面时都会提示用户安装新的Active X.

您必须努力解决网页指定的文件版本以及cab中找到的文件版本。这些版本必须匹配。我无法回想起所有细节,但可能是所有检查的都是CAB文件版本:

Sample from this Microsoft article

<object id="CommonDialog1" width="32" HEIGHT="32"
    classid="CLSID:F9043C85-F6F2-101A-A3C9-08002B2F49FB"
    codebase="http://activex.microsoft.com/controls/vb5/comdlg32.cab
    #Version=1,0,0,0">
</object>

答案 1 :(得分:0)

这实际上是关于Visual C ++可再发行组件的问题,因为从网页安装的ActiveX控件不需要使用MSI进行安装。如果这就是你所做的一切,那么简短的回答就是你得到VC 2005可再发行组件并运行它,这样的事情:

http://www.microsoft.com/en-us/download/details.aspx?id=3387

这将在正确的位置安装C ++支持文件,如ATL80.dll等,它只是工作。你不知道他们去哪里:

http://msdn.microsoft.com/en-us/library/ms235316(v=vs.80).aspx

拥有这些Dll的私有版本是危险的,因为它们有安全修复程序,并且如果您有MS安全更新无法找到并修复的私有副本,那么您实际上有责任在客户端上维护它们系统。

另一方面,我无法确定您的问题是否有一个单独的MSI文件,其中包含许多其他内容(不是ActiveX),您希望通过让人们下载它来安装它。