我寫了一個.net dll,我可以從vb6成功調用。部署到xp,vista 32和vista 64盒子一直在工作。它不適用於Windows 7 64位。我無法在最終用戶計算機上運行regasm.exe/codebase name.dll,因爲它們不是管理員。任何想法幫助我部署將不勝感激。vb6和vb .net互操作vista 64與Windows 7
目前我的應用程序部署在「c:\ Program Files文件(x86)\應用程序名稱」目錄中。
我寫了一個.net dll,我可以從vb6成功調用。部署到xp,vista 32和vista 64盒子一直在工作。它不適用於Windows 7 64位。我無法在最終用戶計算機上運行regasm.exe/codebase name.dll,因爲它們不是管理員。任何想法幫助我部署將不勝感激。vb6和vb .net互操作vista 64與Windows 7
目前我的應用程序部署在「c:\ Program Files文件(x86)\應用程序名稱」目錄中。
我使用免註冊的COM來訪問.NET互操作程序集。
Basicly首先你要創建一個mt.exe
集清單和任選sn.exe
這樣
mt.exe -managedassemblyname:{Your_DLL} -nodependency -out:{Your_DLL}.manifest
mt.exe -manifest {Your_DLL}.manifest -outputresource:%{Your_DLL};1
sn -Ra {Your_DLL} {Your_PFX}
重新簽訂強名稱然後引用該程序集清單中的應用程序清單這樣
<dependency>
<dependentAssembly>
<assemblyIdentity name="{Your_DLL}" version="1.0.0.0" publicKeyToken="hash_here" processorArchitecture="x86" />
</dependentAssembly>
</dependency>
其中assemblyIdentity
與{Your_DLL}的程序集清單中的assemblyIdentity
匹配。
在客戶端計算機上,VB6可執行文件和.NET DLL必須位於同一個文件夾中。不需要重新註冊,也不需要GAC註冊。
我使用UMMM工具自動執行清單創建過程,但如果是一次性安裝,則可以手動執行。
如果您需要更精確的指示,讓我知道。
感謝您的答覆。它在Windows 7 64位上工作嗎?我用HKCU \ Software \ Classes \ Wow6432Node取代了HKLM。這適用於Vista 64,但不是Windows 7 ....我懷疑Wow6432Node問題。 – sparkkkey 2010-02-18 23:02:32
嘗試刪除'Wow6432Node' – SLaks 2010-02-18 23:10:01
感謝您的幫助SLaks。我讀到Wow6432Node是必需的,因爲vb6應用程序是32位的。我會刪除它並嘗試一下。 – sparkkkey 2010-02-18 23:40:20
如何在沒有管理員權限的情況下安裝它? – SLaks 2010-02-18 22:52:03
初始安裝具有管理權限。我需要能夠更新它沒有管理員權限。 – sparkkkey 2010-02-18 22:56:17
你想更新什麼?沒有管理員權限,您將無法更新程序文件中的DLL。 (除非你修改ACL) – SLaks 2010-02-18 22:58:26