2016-09-01 95 views
0

我有一個自定義操作有一個本地化DLL的引用問題(我們稱之爲X.dll)。當我構建CA項目時,我可以在bin文件夾中看到幾個語言文件夾(de,fr,...),每個文件夾都包含與該語言相對應的X.resources.dll。運行安裝程序時出現問題。當它提取CA二進制文件時,語言文件夾不存在;相反,我只能看到一個X.resources.dll文件。 我需要所有這些資源的DLL存在或我的行動將失敗。WIX CustomAction缺少本地化文件夾

有沒有人有一個線索爲什麼發生這種情況,以及爲什麼提取的內容與CA項目的bin文件夾中的內容不一樣?

該設置配置爲構建所有文化。

回答

0

有一種方法可以爲makefxCA.exe在cmd行中包含更多文件。我想你需要定義$(CustomActionContents)msbuild屬性,這是一個包含文件路徑的限定列表。

您可以在wix.ca.targets文件中的自定義操作項目結尾處看到運行的msbuild目標。

我不知道這是否會嘗試將所有包含的文件放在根路徑中,否則這可能會導致重複的名稱dll問題。或者,您可以瞭解如何爲所有支持的語言創建一個本地化dll,但這可能很困難(儘管我確信它一定可行)。

+0

我嘗試添加文件夾到項目文件,如 $(OutputPath).. \ .. \ de \ File.resources.dll; $(OutputPath).. \ .. \ es。 對於第一種情況,File.reosources.dll將被覆蓋,因爲另一種存在另一種語言,並且在程序包中沒有目錄。 在第二個示例中,我嘗試獲取文件夾(es),但它在生成「System.UnauthorizedAccessException:訪問路徑被拒絕時出現錯誤」。 如果不包含文件夾,那麼包含文件就沒有意義,因爲它們會覆蓋其他文件。 – danis

+1

這就是我所擔心的= /我實際上做了一些查找並發現[this](https://buildmaestro.wordpress.com/2011/08/30/c-dtf-using-locale-net- culture-folder-and-resources-files-for-translations-with-makesfxca-exe /)(< - 超鏈接),它應該正是你想要的! –

+0

感謝您的鏈接。這是我所期望的,除了一件事情:cmd.exe的命令長度限制爲8192個字符。如果具有路徑的文件導致MakeSfx命令長於8192個字符,則它將失敗並顯示錯誤。我會嘗試查看是否可以限制命令長度,或者如果我可以使用替代解決方案(如壓縮Bin文件夾,包括構建中的壓縮文件,然後在實際操作之前向CA方法中提取壓縮文件)。非常感謝您尋找這個解決方案! – danis