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