2010-04-21 31 views
0

這看起來很瑣碎,但我無法得到它的工作MSI.DLL進口..無法簽署使用TLBIMP裝配

我有一個MSI.DLL包裝(名爲Interop.WindowsInstaller.dll)的我需要簽字。做到這一點的方法是在導入時簽署它(這個特定的案例甚至在MSDN中有記錄:http://msdn.microsoft.com/en-us/library/zec56a0w.aspx)。

- 不管我怎麼做(W /或W/OA密鑰文件,W /或W/O添加 「/ delaysign」),生成的assemly的大小始終是36,864字節和查看DLL的屬性時沒有「數字簽名」選項卡(不用說 - DLL沒有簽名)。

我在這裏錯過了什麼? (...幫助!)

回答

0

[注意:最終我從卡雷爾Zikmund on this thread提示,這幫助我解決了這個謎。我會在這裏粘貼我的回覆 - 爲更好的]。

所以,我使用的下面的行向登錄在導入該組件:

TLBIMP C:\窗口\ system32 \ MSI.DLL /out:Interop.WindowsInstaller.dll /keyfile:MyKey.snk

我再複製該文件到適當的位置,並建立了項目,但每個構建失敗以下錯誤時間:集生成失敗 - 引用程序集「Interop.WindowsInstaller」不具有強名稱

我認爲這個問題是與TLBIMP線,但閱讀卡雷爾Zikmund的答覆,並確定該DLL是強命名後(使用SN室顫Interop.WindowsInstaller)我發現了這個問題。

將引用添加到「Microsoft Windows Installer對象庫」COM對象實際上將一個代碼塊植入.csproj文件中。 我沒有意識到這一點,但該塊導致DLL文件在每次項目建成時都從零開始重新生成。生成的文件當然沒有強名。

我解決它是從項目中移除所提到的「Microsoft Windows安裝程序對象庫」,並添加直接文件參考進口的(並已簽訂)Interop.WindowsInstaller.dll文件的方式。