2013-08-29 52 views
0

我試圖在我的DLL上使用.msi執行自定義命令。我想知道如何獲得x64 machinex86框架路徑(c:\Windows\Microsoft.NET\Framework\v2.0.50727)和x86 machine在MSI自定義操作中獲取框架的路徑

MSI Error - Failure of regsvr32 custom action

爲了讓我們使用[SystemFolder]系統路徑使用,因此沒有任何財產來獲取c:\Windows\Microsoft.NET\Framework\v2.0.50727

enter image description here位置

相關文章

Getting the .NET Framework directory path

+0

我附上的圖像。檢查我想要那裏。和FYI我是Java開發人員,但必須解決.net所以...我必須寫在我的DLL上面的鏈接提供的功能?以及如何在自定義操作中調用該函數.. –

+0

要執行的自定義命令是什麼? –

+0

c:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727> regasm.exe mydll.dll/codebase –

回答

0

「自我註冊」(Regsvr32,Regasm,GACUTIL,InstallUtil等)不被視爲Windows Installer中的最佳實踐,因爲它在流程外運行,不是聲明性的,也不是事務性的。它使Windows Installer知道目標機器正在進行的更改,速度較慢,通常很脆弱,經常會在修復,升級,降級,回滾等情況下中斷。

另一種方法是「收集」或「提取」與您的程序集關聯的COM元數據,並將它們原生創建到您的MSI中。你如何做到這一點完全取決於你用什麼工具創作你的MSI。 InstallShield有一個名爲「.NET Com Visible」的設置,而WiX有一個名爲「Heat」的功能。更原始的方法是運行命令regasm foo.dll /regfile:out.reg,然後手動替換具有MSI目錄屬性的路徑,將regfile的內容編寫到安裝程序中。

這裏有一個陷阱與regasm/REGFILE在MSDN文檔上regasm話題:

注意,.reg文件不包含可以通過 用戶定義的寄存器的功能進行任何註冊表更新。

相關問題