2012-03-01 101 views
10

我有一個包含多個文件的目錄,我想通過Wix項目將其包含在我的msi包中。將特定目錄中的所有文件包含到msi包中

/database 
/database/migration11.txt 
/database/migration21.txt 
/database/migration32.txt 

這些文件通常更改或有添加新的,我不希望我的適應文件Wix每一個新移民文件。

基本上我想在我的wxs文件說,包括目錄數據庫中的所有文件,並在安裝時將它們放在目錄[INSTALLLOCATION]/database

任何方式來實現這一目標?

新增:

剛剛發現這個解決辦法:use HEAT但我很好奇,如果有另一種推薦方式。

+1

熱是一個相當推薦的方式。它是該工具集的一部分。還有一個名爲Paraffin的外部工具(http://www.wintellect.com/CS/blogs/jrobbins/archive/tags/Paraffin/default.aspx)在社區中廣泛使用。順便說一句,你應該小心自動化。如果您不打算廣泛地更改該文件夾的內容,則最好生成一次WiX文件,並將其包含到解決方案中,稍後在文件夾內容更改時對其進行修改。更多的手工工作,但更多的控制。權衡,像往常一樣:) – 2012-03-01 12:34:36

+0

感謝您的評論。我以爲不使用熱,因爲看起來[不建議在你的內置中自動使用](http://stackoverflow.com/a/5100898/220636)。但我會檢查出來。 – nabulke 2012-03-01 12:39:11

+0

「不推薦==小心」在這種情況下。如果你有很多文件,你沒有什麼選擇。正如我所提到的,它在某個時刻仍然是一種折衷。 – 2012-03-01 13:12:15

回答

13

您可以在wixproj文件中使用任務:

<ItemGroup> 
... Your wxs files ... 
<HarvestDirectory Include="$(variable)\YourDirectory\"> 
    <ComponentGroupName>CG_YOUR_GROUP</ComponentGroupName> 
    <DirectoryRefId>DIR_REFERENCE</DirectoryRefId> 
    <AutogenerateGuids>false</AutogenerateGuids> 
    <GenerateGuidsNow>false</GenerateGuidsNow> 
    <SuppressUniqueIds>true</SuppressUniqueIds> 
    <SuppressCom>true</SuppressCom> 
    <SuppressRegistry>true</SuppressRegistry> 
    <SuppressRootDirectory>true</SuppressRootDirectory> 
    <PreprocessorVariable>var.Property_Preprocessor</PreprocessorVariable> 
</HarvestDirectory> 
</ItemGroup> 

這個任務的生成過程中調用熱火。希望這可以幫助你。

+1

感謝這個例子 - 我會試試看。 – nabulke 2012-03-02 08:19:05

+0

@nabulke完成了這項工作? – sirdank 2015-06-11 12:48:15

+0

請@nabulke你是我們唯一的希望!這是否工作? – gakera 2016-05-10 15:42:00

2

如果有人仍然需要這個,here是一個HarvestDirector與wixproj的示例。感謝DavidEGrayson

+0

這應該是一條評論。 – 2017-01-20 03:07:18

相關問題