2010-02-18 59 views
0

我寫了一個.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)\應用程序名稱」目錄中。

+0

如何在沒有管理員權限的情況下安裝它? – SLaks 2010-02-18 22:52:03

+0

初始安裝具有管理權限。我需要能夠更新它沒有管理員權限。 – sparkkkey 2010-02-18 22:56:17

+0

你想更新什麼?沒有管理員權限,您將無法更新程序文件中的DLL。 (除非你修改ACL) – SLaks 2010-02-18 22:58:26

回答

1

我使用免註冊的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工具自動執行清單創建過程,但如果是一次性安裝,則可以手動執行。

+0

我同意Reg免費通訊是處理這個問題的最佳方式。一直存在一些問題,這仍然是我的長期目標,我會嘗試UMM M工具。 – sparkkkey 2010-02-19 17:49:30

+0

我能夠使用上面列出的mt和sn命令來獲得免費的通訊工作。謝謝您的幫助! – sparkkkey 2010-02-22 20:40:29

0

部署需要管理員權限。這是假設在這種情況下失敗。

+2

錯了。這個有可能。 – SLaks 2010-02-18 22:47:18

+0

它正在使用Vista和XP,沒有管理員權限。我想更新現有的DLL ... – sparkkkey 2010-02-18 22:58:20

1
+0

感謝您的答覆。它在Windows 7 64位上工作嗎?我用HKCU \ Software \ Classes \ Wow6432Node取代了HKLM。這適用於Vista 64,但不是Windows 7 ....我懷疑Wow6432Node問題。 – sparkkkey 2010-02-18 23:02:32

+0

嘗試刪除'Wow6432Node' – SLaks 2010-02-18 23:10:01

+0

感謝您的幫助SLaks。我讀到Wow6432Node是必需的,因爲vb6應用程序是32位的。我會刪除它並嘗試一下。 – sparkkkey 2010-02-18 23:40:20