我們的應用程序之一是VB6應用程序,它需要Tabctl32.ocx。當通過合併模塊安裝Tabctl32時,爲非管理員用戶觸發MSI自我修復
因此,我增加(與版本6.1.97.82包含它)「tabctl32.msm」,以每臺機器基於維克斯。當我運行這臺每臺機器的MSI時,它安裝了OCX,當我作爲管理員登錄並啓動VB應用程序時,該應用程序正常工作。
但是,如果任何人有登錄和標準用戶權限啓動該應用VB是第一次,它觸發的MSI自我修復。一旦該用戶的自我修復完成,它就能夠工作,並且不會再爲該用戶觸發自我修復。這種自我修復不會發生在管理員用戶身上。
當我用Orca檢查MSI時,在「ModuleDependency」表中,此tabctl32模塊與COMCAT msm和OLEAUT32 msm有依賴關係,我們也使用合併模塊安裝它們。
我不明白爲什麼自我修復不會發生爲admin用戶,但對於標準的用戶?
任何人都可以解釋這裏發生了什麼?
你非常接近。實際上,事件查看器有兩個條目: 產品' {A958E33B-5EC8-45C7-B1E0-661D0D7AD318}'的檢測,功能'ThisFeature',組件'{1CD44446-251F-40CC-B158-717060F8A3B6}'失敗。資源'HKEY_CURRENT_USER(64)\ Software \ Company \ InstalledMyAppShortcuts'不存在。 檢測產物的 '{A958E33B-5EC8-45C7-B1E0-661D0D7AD318} ',功能 'ThisFeature' 的組件' {FC3E0B6A-F62B-11D1-B144-00C04F990B2B}請求 – Petronius
過程中失敗但快捷鍵REG沒有按對任何用戶都不存在,因爲它是HKCU特有的。而「{FC3E0B6A-F62B-11D1-B144-00C04F990B2B}」是Tabctl32.ocx的GUID。如果我將Tabctl32.ocx安裝爲鬆散文件而不是合併模塊,則不會發生自我修復。這意味着,我確信捷徑不是罪魁禍首。 – Petronius
不確定這是什麼意思:「快捷鍵註冊表鍵不存在,因爲它是HKCU特定的任何用戶」,因爲每臺機器安裝將安裝它爲安裝用戶而不是其他用戶。您的文章中沒有足夠的信息來說明關鍵文件/註冊表項或者功能中的哪些組件,因爲整個包含的功能已被修復,而不僅僅是組件。 – PhilDW