2010-06-01 66 views
0

我想在MSI打包COM DLL。我希望安裝程序在之後運行批處理文件。 批處理文件基本上指向WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727文件夾並運行regasm命令來註冊程序集。創建一個COM DLL設置

我該如何獲得設置?

謝謝。

回答

1

你不能直接從VS安裝項目運行批處理文件,但我認爲你可以運行腳本來執行它們。像這樣的東西可能會奏效:

Set s = CreateObject("WScript.Shell") 
cmd = "yourbat.bat" 
s.Run ("cmd /C " & """" & command & """") 
Set s = Nothing 

這可能不是在所有計算機上工作,但如果他們沒有腳本主機已安裝的,所以它可能是最好拿出一個非批處理文件的方式。

編輯:只記得一個可能更好的方式做到這一點。

我認爲它會工作,在您的電腦上運行RegAsm/regfile參數,它創建一個regfile包含所需的所有設置。然後,只需將該regfile添加到您的安裝項目中,您就不必在客戶端的計算機上運行RegAsm

+0

我在哪裏編寫腳本? – user20358 2010-06-01 07:32:00

+1

@daemonkid - 在一個文件中,然後創建一個自定義操作來執行該文件。不過,請看我更新的答案,因爲我認爲有更好的解決方案。 – 2010-06-01 07:50:07

1

VS安裝項目已經知道如何註冊ComVisible程序集。將DLL的Register屬性設置爲「vsdrpCOM」。不需要額外的安裝後命令。

+0

謝謝。組件也被註冊了,並且可以在註冊表中看到。我甚至把接口和實現類的[Guid(「」)]和[ComVisible(true)]屬性都放在了dll中。在項目屬性中,我也檢查了'註冊互操作' 但是,調用應用程序仍然會出現此錯誤。 「無法創建OLE對象」 有什麼問題? – user20358 2010-06-01 13:49:26

+0

我甚至設置了上面提到的寄存器屬性。 – user20358 2010-06-01 13:50:02

+1

好吧,這不是註冊問題。奇怪的消息btw,這不是一個標準的COM錯誤。 – 2010-06-01 13:54:54