2010-12-05 155 views
2

全部問候,用WiX在GAC中註冊COM DLL

我正在爲我的程序開發一個WiX安裝腳本。我需要將一個C#dll安裝到GAC,然後進行註冊。因此,我用Assembly=".net"標記文件,以便WiX GAC爲我提供該文件,然後我有一個延遲自定義操作,設置爲在InstallFinalize之前運行,該操作調用Assembly.Load從GAC加載程序集,然後RegistrationServices.RegisterAssembly進行註冊。

應該是完美的,除了一個問題:顯然dll實際上沒有寫入到GAC,直到提交階段,所以當我的自定義動作運行時,Assembly.Load因爲找不到文件而拋出。它在哪裏?它在提交階段之前是否可以訪問?還是有更好的方法來完成這一切?看起來像這樣一件小事...

請不要建議使用heat.exe;我真的很想避免它。我的程序有一個ComRegisterFunction,如果可能的話,它想在用戶的計算機上執行。

+0

你有沒有找到解決方案?我遇到了完全相同的問題:( – zaitsman 2017-06-07 11:23:48

回答

0

自我註冊一般在安裝過程中都會被忽視,正是由於您所描述的問題。您應該將註冊表項添加到WiX腳本中。

另外,您不是隻將程序集安裝在GAC中,是嗎?將您的COM註冊指向非GAC位置。

+0

我只是安裝到GAC,這正是問題所在,我問它是否將它存儲在某個臨時位置,可以使用我的自定義操作訪問的位置。自我註冊被看不起,但我不喜歡失去在註冊時運行條件檢查的機會,另外,heat.exe顯示我的註冊表項非常大,我的程序中每個類都有一個條目,要知道他們是否有必要或什麼,但這將會不斷變化,我真的不想不斷更新它... – 2010-12-05 07:56:25