2012-05-11 51 views
0

我重構舊的InstallShield應用程序,我需要執行調用從自定義DLL中的函數動作。不幸的是,這個動作執行的功能取決於另一個自定義的dll。所以我的問題是:「是否有可能有一個自定義的DLL依賴於另一個自定義的DLL,如果是的話?」的Installshield使用自定義DLL從另一個定義DLL

當我嘗試運行它與錯誤崩潰安裝程序「安裝程序正在完成之前中斷...」然後我複製了第二個自定義的dll的文件夾,我加入到PATH,一切都很好。當然,我不能指望我的顧客手動做到這一點。

我使用InstallShield 2008年,但我相信,回答我的問題將是所有版本中相同。

編輯:也許我的問題是不夠清楚我會給例如: 比方說,我有A.DLL具有功能:

UINT __stdcall 
PerformAction(MSIHANDLE hInstall) // IN 
{ 
    ... 
    help(); 
    ... 
} 

幫助()在B.DLL定義。現在,當我創建一個新的動作我設置它的DLL是A.DLL和它的函數名的performAction可以,但沒有辦法,表示這取決於B.DLL 當我複製到B.DLL包括到PATH的文件夾安裝程序工作正常,但如果我不這樣做失敗。

回答

1

這裏最簡單的InstallShield的辦法是改用或除了二進制表項的支持文件。 Windows Installer只會爲自定義操作提取單個DLL,但如果您引用SUPPORTDIR中的文件,則它可以使用多個DLL。

+0

你怎麼知道安裝屏蔽從SUPPORTDIR使用文件?你可以舉例說明我描述的情況: –

+0

InstallShield將把文件解壓到SUPPORTDIR,並用目錄的路徑設置一個同名的屬性(使用MsiGetProperty)。從那裏你可以使用LoadLibrary()將你的DLL加載到內存中。 –