簡體   English   中英

如何使用安裝程序部署類庫(dll 或 tbl 文件)

[英]How to deploy Class Library (dll or tbl file) with Installer


我在 Visual Studio 上使用 .Net Framework (VB.NET) 開發了一個新的(小)類,並在 VBA-Excel 上做了一個參考來執行任務。 它在我的機器上運行良好,所以這里真正的問題是在客戶端的機器上部署這個類。

當我在 Visual Studio 上進行構建時,我選擇了“Register for COM Interop” ,因此它創建了一個 .dll 和 .tbs 文件。 我以為我可以在 VBA 上使用對這些文件的引用,一切都會正常工作,但這並不是那么簡單。 我必須先在系統上注冊 dll,然后才能使用它,Visual Studio 會在構建時自動完成。

問題是,我怎樣才能制作一個通用的安裝程序來只將那些 dll 和 tbl 文件安裝到任何人的機器上 這些文件必須保留在已知文件夾中,以便我可以在 VBA 上引用它們,但 Windows 寄存器必須知道它們存在!

到目前為止我知道什么:

  • 在構建過程中,Visual Studio 使用 Regasm.exe 來注冊 dll; 我可以使用 bat 文件來調用 regasm.exe 但這不是一個選項,因為我必須引用它並且每個客戶端可能有不同的 .Net Framework 版本,所以我無法知道完整路徑其中。

  • regsvr32.exe 也不起作用,因為我們需要管理員權限,並且
    客戶沒有。

  • 我可以使用 ClickOnce,但它是一個類庫,因此發布選項不存在。

這里我有一些參考資料,但我還沒有找到好的解決方案。

https://www.red-gate.com/simple-talk/dotnet/visual-studio/build-and-deploy-a-.net-com-assembly/

https://social.msdn.microsoft.com/Forums/windows/en-US/70f5558c-cf53-4bc0-b3ea-435b6f5b3956/how-to-get-setup-project-to-register-assembly-for-com-互操作?論壇=winformssetup

https://social.msdn.microsoft.com/Forums/en-US/47d6dc58-37ce-4a34-9524-20dc1c1ffd90/how-to-use-clickonce-deployment-technology-for-class-library-project?forum= winformssetup

更新 1

似乎在寄存器中安裝的唯一方法是通過 regasm.exe 或 regsvr32,並且兩者都需要提升的命令提示符(具有管理員權限),這是客戶端沒有的。

我想解決方案是使用COM 組件的免注冊激活,它不需要更新注冊表或在 GAC 中放置程序集。 這是參考:

是否可以在不添加注冊表項的情況下為 COM 互操作注冊 .NET 程序集?

更新 2

我找到了這個答案,我覺得我真的很接近解決方案:

在沒有管理員權限的情況下注冊 .Net COM DLL/regasm

問題是,我開發的類正在使用另一個類,即 PdfSharp。 當我取消注冊 dll 並嘗試再次注冊(通過 regasm.exe)時,我的 VBA 宏不是在創建對象時出現錯誤,而是在我執行類的函數時出現錯誤,說 PdfSharp 不能'找不到。

這個問題的解決方案並沒有說明使用 3rd 方庫,我認為我的 .dll 也會帶來 pdfsharp.dll。

有什么想法嗎? 我真的很接近解決這個問題。

您是否嘗試過使用 Install Shield Limited Edition 來打包您的應用程序? 免費。

我放棄了在沒有管理員權限的機器上安裝 DLL 的嘗試,所以我在 Visual Studio 上開發了一個控制台應用程序,並通過 VBA 上的 Shell 命令運行它,它的工作就像一個魅力。

我將其設置為正確答案,因為它解決了我的問題,但我找不到通過其他機器上的安裝程序部署 dll 的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM