2014-10-04 90 views
1

我需要使用Wix創建MSI。我的應用程序有Active X控件。當任何用戶連接或訪問Web上的URL時,我的應用程序需要安裝在用戶機器中。 我需要安裝的路徑是C:\Windows\Downloaded Program Files\CONFLICT.xx,此文件夾應包含文件ATL80.dll,app.dll,MSVCP80.dll MSVCR80.dll。我看到一些文章,但與他們混淆。請讓我知道如何開始這個以及我需要遵循哪些步驟才能使MSI成爲可能。使用Wix MSI打包ActiveX控件

+0

請告訴我們你做了什麼。顯示一些努力 – Gilad 2014-10-04 08:09:13

+0

您是否介意添加註釋以說明您提出的解決方案? – 2014-10-06 12:32:41

+0

我完全遵循Glytzhkof在下面的評論中給出的指示。它的工作。 – bally 2014-10-08 03:55:32

回答

1

還有更多內容:Packaging ActiveX Controls

本質上網頁將請求簽署駕駛室通過一個代碼URL下載和安裝,如:(從上面鏈接的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),並安裝(標準微軟t駕駛室安裝/抽取)。下次打開網頁時,Active X控件應該按預期工作。這是正常情況(需要管理員權限才能正常工作)。這裏成功安裝可以捕獲並打包爲MSI。由於涉及完成安裝的所有證書,因此需要大量清理。我記得MSI不需要任何證書,因爲MSI以管理員/提升的權限運行並直接在文件夾中轉儲文件。如果你問我,這是一個安全問題,但這些出租車很少以這種方式部署。未經簽名的cab文件將不起作用(除非IE是自定義的)。

是在這種情況下,用戶創建的衝突文件夾表示有從駕駛室安裝的文件和網頁中指定和預期這些文件的版本之間的差異。這會導致IE觸發新的CAB下載。在發現C:\Windows\Downloaded Program Files\中已存在相同的文件後,每次都會創建一個新的CONFLICT子文件夾,並且每次打開頁面時都會提示用戶進行新的Active X安裝。

您必須努力解決網頁指定的文件版本以及駕駛室中找到的文件版本。這些版本必須匹配。我不記得所有的細節,但它可能是被檢查的所有是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> 
+0

謝謝你這麼好的解釋。它給了我繼續前進的基本想法。 – bally 2014-10-06 05:00:54

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),你想通過下載它的人來安裝。

+0

除了運行時問題,它還是通過網頁部署Active X cab的古怪世界:[打包ActiveX控件](http://msdn.microsoft.com/zh-cn/library/aa751974(v = vs.85) )的.aspx)。看到我的答案,它可能缺少一些細節。 – 2014-10-04 20:23:50

+0

我意識到這一點,但問題在於,似乎根本沒有WiX或MSI問題,而問題似乎是將VC++運行時間放到系統上。目前尚不清楚,但我想也許他知道如何在網頁中打包AX控件,並且只需要系統上的VC_ ++運行時。對問題的更新可能會解決該問題。 – PhilDW 2014-10-04 20:39:49

+0

只有在駕駛室安裝中出現問題時纔會顯示CONFLICT文件夾。他應該嘗試捕獲此安裝而不是使用Wix。 – 2014-10-04 20:55:23