2012-12-10 44 views
1

好了,所以我一直在建立一個C#ActiveX控件和所遇到的過程中,這本書的每一個問題......話雖這麼說,我現在一切都結清了,除了安裝安裝過程中的ActiveX CAB錯誤

在我可以深入研究這個問題之前,我需要解釋我的設置過程是如何工作的以及爲什麼我選擇了這條路線。

  1. 我有一個存儲我的設置exe文件,它通過網頁使用對象標記
  2. 的設置EXE是有我的項目嵌入其內部一個InstallShield LE項目加載的簽名CAB文件(即要安裝的文件是最後的安裝二進制的一部分)
  3. 的CAB文件中有一個INF文件告訴呼叫者運行安裝EXE安裝該控件

這個過程運行良好並啓動安裝應用程序,然後安裝c ONTROL。然而,附近的安裝過程中到底是誰非管理員用戶收到一條錯誤信息,說明如下:

An error occurred while copying file myINFFile.inf 

Cannot copy file to destination directory. 

Click Retry to retry the operation or click Cancel to 

如果你打(是啊,它只是「到」字後切斷)重試它只會一遍又一遍地重複錯誤,直到你點擊取消。如果您點擊取消,則說明「您是否希望設置爲繼續執行此錯誤?」,然後繼續成功安裝控件。

由於此錯誤只發生在權限有限的用戶身上,我相信問題在於駕駛室提取過程無法將inf文件提取到試圖將其提取到的位置...這只是非常煩人,因爲此文件不提供服務其他目的,特別是在安裝過程中,但我無法弄清楚爲什麼問題正在發生或如何解決它...

+1

使用「進程管理器」(微軟/ Sysinternals的),看看什麼文件被寫入。我的猜測是你沒有正確設置編輯器來允許每個用戶安裝你的ActiveX控件。 –

+0

應該可能已經注意到了上面的內容......當我運行獨立於cab文件的installshield時,它在所有特權級別運行都沒有任何錯誤。這意味着它是問題的CAB文件,我在提取過程中猜測,而不是安裝可執行文件......是否可以爲每個用戶安裝配置一個cab文件,就像我在安裝程序的可執行文件中已經有的一樣? –

+0

a-HA!這樣做,謝謝你把我放在正確的方向... 如果您將以下掛鉤添加到INF文件,它會正確運行並將駕駛室提取到允許的位置: [部署] InstallScope = user –

回答

2

使用process explorer(由Microsoft/SysInternals)來查看哪些文件被寫入。

我的猜測是,您沒有正確設置作者,以允許每個用戶安裝您的ActiveX控件。

(羅伯特Petz)如果添加下列鉤到INF文件,它可以正常運行,並提取駕駛室到允許的位置:

[Deployment] 
    InstallScope=user