2015-01-16 17 views
0

正如標題所說,我想安裝一個外部文件:複製外部文件或退回到內部文件與維克斯

<Component> 
    <File Source="Application.exe.config" Compressed="no" /> 
</Component> 

和如果外部文件不可用安裝在默認情況下,內部文件:

<Component> 
    <File Source="Application.exe.default.config" Name="Application.exe.config" /> 
</Component> 

因此,這是保證,總是有一個文件安裝。 我該如何做到這一點?

澄清:通過外部我不是指一個CopyFile元素。相反,我正在討論一個正常的WiX-File(如第一個片段所示),它不會被壓縮成一個cab。

+0

你是指什麼外部文件? – Isaiah4110

+0

@ Isaiah4110在我的代碼片段中看到:一個文件不嵌入msi中,但單獨發送。 – jacob1123

回答

2

你的代碼片段顯示MSI中的文件,而不是外部的,這是混亂。如果它是外部的,它不在WiX或MSI中,您可以使用WiX CopyFile元素複製它。

我很想用文件搜索來查看文件是否存在,並用WiX記憶屬性模式存儲結果屬性。例如,使文件組件具有傳遞性,並以「NOT FILEFOUND」爲條件,因此如果找到外部文件,則不會安裝它。那麼你只需要在FILEFOUND被設置的情況下複製外部文件。爲此,我將添加另一個只包含註冊表項的傳遞組件(它必須包含某些內容),條件爲FILEFOUND。將WiX CopyFile放入此組件,以便在FILEFOUND設置時運行。我認爲這樣做不需要編寫任何代碼。

+0

我更新了問題以進行澄清。你可以添加一些代碼嗎?我還沒有使用條件,這聽起來像這可能對我有用。 FileSearch和傳遞都是有用的提示。 – jacob1123

+0

在-WiX教程上進行搜索,並從那裏開始。對於從MSI文件旁邊的外部文件副本,請查找以SourceDir作爲源位置的WiX CopyFile示例。也看看 - 從MSI到WiX-博客條目。 – PhilDW

+0

使用CopyFile與屬性Compressed =「no」的文件有什麼優勢? – jacob1123