我有一個InstallShield安裝程序,它在安裝過程中調用一個C++/CLI DLL Me.dll,它又調用一個C#程序集; Microsoft.Foo.dllInstallShield和工作目錄
當InstallShield安裝程序嘗試加載Microsoft.Foo.dll時,我得到一個FileNotFoundException(即無法加載程序集)。
使用fuslogvw.exe它告訴我程序集試圖從桌面加載,這是我運行安裝程序的地方。奇怪的部分是,在安裝程序中調用ChangeDirectory,然後驗證SUPPORTDIR(即提取文件的temp)是否確實是當前目錄。我也在所有的程序集上嘗試了UseDLL,但這也不起作用。
如果在安裝期間手動將程序集複製到桌面,安裝程序將工作。
我必須缺少一個步驟。我如何將InstallShields當前工作目錄更改爲SUPPORTDIR,以便它可以正確地找到此程序集?
如果安裝程序調用dll,則它需要與安裝程序位於同一文件夾中。更改目錄與此問題無關。您似乎在安裝程序dll和已安裝的dll之間存在某種混淆。是在安裝的應用程序中使用的Microsoft.foo.dll嗎? –
是的,它也用於已安裝的應用程序中。更具體地說,我稱UseDLL(SUPPORTDIR ^「Me.dll」);然後調用該DLL中的函數。 Me.dll是什麼引用Microsoft.Foo.dll。 – BigHands79
需要在兩個地方,除非你要嘗試使用appdomain.assembly解決。 http://msdn.microsoft.com/en-us/library/ff527268(v=vs.110).aspx –