2017-03-07 67 views
0

我正在使用WiX來安裝64位應用程序。我已經想通了如何使64 bit installer,但我有搞清楚如何註冊我的DLL麻煩我安裝,所以我沒有得到如何使用WiX手動註冊64位DLL

"Program can't start because XXXX.dll is missing from your computer. 
Try reinstalling the program to fix this problem" 

錯誤。

我試過使用heat.exe創建必要的RegistryValue標記,但它與64位DLL不兼容。我編譯了一些32位的DLL(不是所有的32位都可用),但我仍然無法使heat.exe工作。看看this WiX help article似乎我應該可以手動編寫RegistryValue標記,但我對它們應包含的內容感到困惑。我一直在看例子here,它比WiX文章中的更復雜。

什麼RegistryValue標籤我需要註冊一個DLL的操作系統,所以它可以在PATH找到?

編輯:其他上下文。

我想安裝一個SDK和一些示例源代碼。我將SDK(DLLs,.libs和頭文件)放在\ Program Files文件夾中,我將示例源代碼放在桌面上的一個文件夾中。我有%LIBPATH%上的lib目錄,%INCLUDE%上的包含目錄以及%PATH%上的bin(DLL)目錄。

然後,我在桌面上有一個VS解決方案示例代碼的文件夾。在解決方案中,我在VS項目的Additional Library DirectoriesAdditional Include Directories字段中指定了%LIBPATH%和%INCLUDE%。這工作正常,解決方案將建立。但是當我嘗試運行它時,出現「計算機中缺少DLL」錯誤。我想弄清楚如何找到SDK DLL(無論是否在%PATH%),以便用戶可以簡單地構建和運行演示代碼,而無需複製DLL,並且相同對於他們構建的任何其他應用程序都是如此。

編輯2:我投票結束這個問題。似乎使用WiX註冊DLL與我的實際問題無關。

+0

您可以簡單地將'SelfRegCost =「1」'添加到每個DLL的['File'](http://wixtoolset.org/documentation/manual/v3/xsd/wix/file.html)元素中。 – zett42

+0

我試過了,註冊失敗。此外,它似乎是[不是最佳實踐](http://stackoverflow.com/questions/364187/how-do-you-register-a-win32-com-dll-file-in-wix-3) 。 – stranger

回答

1

你在這裏混淆了兩件事。 「註冊」是一個COM活動,但「XXXX.dll丟失」表示一個普通的非COM DLL。

您對%PATH%的引用也暗示了非COM DLL,但%PATH%應該不是必需的。相反,將DLL與可執行文件一起安裝。

從理論上講,還有應用程序清單,但微軟已經做了一個徹底的混亂。如果你正在編寫任何類型的普通應用程序,我會完全避免它們。

+0

謝謝你的解釋。我編輯了這個問題,提供了一些關於爲什麼我不能將DLL放在EXE文件夾中的上下文。 – stranger