2017-07-24 33 views
0

我正在努力將應用程序從.NET 3.5升級到.NET 4.0,最終4.6,它在安裝過程中當前崩潰。在將舊的託管C++代碼重新語法化爲C++/CLI時,我改變了很多,但除了.NET設置之外,還有約95%的其他C#文件未被觸及。該代碼也移離VS 2010VS 2015,目標機器已經從32位移動視窗7到64位的Windows 10MSI Windows安裝程序中發現「不明確的匹配」錯誤1001

在目標機器上運行我的新的安裝程序產生以下錯誤框:

錯誤1001:在安裝的提交階段發生異常。 此例外情況將被忽略,安裝將繼續。 - >模糊匹配找到。

過去的幾個錯誤1001的一直是關於.NET版本的區別以及所需的代碼更改。這些消息也更具體地討論了哪些文件存在問題。

我能夠爲工作版本和新版本獲取日誌文件。他們有相似之處,但脫穎而出一條線,這不是存在於舊的日誌是:

MSI(S)(6C:A4)[11:17:04:754]:WIN64DUALFOLDERS:替代在 「 C:\ Program Files(x86)\ FOLDER'文件夾已被1個掩碼參數(文件夾對的iSwapAttrib成員= 0)阻止 。

我想知道如果這是相關或不相關的,這些行出現很多,然後日誌看起來不同。如果問題出現在代碼中,或者類似安裝程序項目的設置問題,我甚至沒有正面評價。有沒有人有任何想法在哪裏從這裏看?

回答

0

錯誤1001幾乎總是自定義操作失敗的下游結果,所以會出現代碼失敗,加載失敗等情況。無論哪種方式,它都需要調試代碼路徑或加載代碼。這些託管代碼自定義操作不以「正常」方式加載。它們使用反射進行實例化,運行時的某些版本將被加載,並且一些諸如自動加載配置文件的功能將不起作用。在Everyone安裝中,他們使用系統帳戶運行。這些都有下游影響,可能會導致在正常的用戶加載環境中工作的代碼失敗(這是由msiexec.exe調用的Dll不是)。

雙文件夾條目不相關。您尚未發佈安裝項目的體系結構,但32位安裝項目無法安裝到64位ProgramFiles文件夾。對於64位安裝項目,您可能希望使用ProgramFiles64Folder,CommonFiles64Folder等。

編輯:模糊匹配找到可能是與定位安裝程序類類型相關的反射錯誤。

+0

我想等到安裝穩定後再感謝你,但你是對的 - 按照自定義操作向下放置兔子洞,最終使我使用一個較舊的,不再受支持的控件。取而代之的是所有的控制,非常有必要。 –

相關問題