我正在嘗試重寫用wix創作的msi包以使用外部而不是嵌入式文件。爲此,我已經取代了以下MediaTemplate
元素:如何在wix中從外部目錄安裝文件?
<MediaTemplate EmbedCab="yes" />
與媒體元素。我希望我的一些文件被嵌入,其他文件應該是外部的。爲此,我已經創建了以下兩個Media
元素
<Media Id="1" Cabinet="MyCab.cab" EmbedCab="yes" />
<Media Id="2" DiskPrompt="!(loc.DskPrmptDisk1)" Layout="Files"/>
以下是File
元素引用Media
元件中的每一個的兩個例子:
<File Id="EmbeddedIniFile.ini" Name="SomeIni.ini" Source="Features\All-in-one\Files\IniFiles\SomeIni.ini" KeyPath="yes" Compressed="yes" DiskId="1"/>
<File Id="AppData.exe" Name="AppData.exe" Vital="no" Source="Features\AnotherFeature\Files\ExeFiles\AppData.exe" KeyPath="yes" Compressed="no" DiskId="2"/>
正如你所看到的,第一File
元素Compressed
屬性設置爲yes
,而第二個元素的Compressed
屬性設置爲no
。第一個File
元素中的DiskId
屬性可以省略。安裝嵌入的文件工作正常,但是安裝壓縮的文件失敗,並在安裝日誌中以下條目:
MSI (s) (E8:00) [16:56:45:570]: Executing op: ChangeMedia(MediaVolumeLabel=Label,MediaPrompt=Insert Disk.,,BytesPerTick=32768,CopierType=0,,,,,,IsFirstPhysicalMedia=0)
MSI (s) (E8:00) [16:56:45:570]: Executing op: FileCopy(SourceName=AppData.exe,SourceCabKey=AppData.exe,DestName=AppData.exe,Attributes=8704,FileSize=451072,PerTick=32768,,VerifyMedia=1,,,,,CheckCRC=0,Version=5.5.3.0,Language=1031,InstallMode=58982400,,,,,,,)
MSI (s) (E8:00) [16:56:45:570]: File: C:\Programs\MyProgramme\AppData.exe; To be installed; Won't patch; No existing file
MSI (s) (E8:00) [16:56:45:570]: Source for file 'AppData.exe' is uncompressed, at 'C:\Documents and Settings\user\'.
InstallFiles: File: AppData.exe, Directory: C:\Programs\MyProgramme\, Size: 451072
MSI (s) (E8:00) [16:56:45:570]: Note: 1: 2318 2: C:\Programs\MyProgramme\AppData.exe
MSI (s) (E8:00) [16:56:45:570]: Note: 1: 1308 2: C:\Documents and Settings\user\AppData.exe
請注意,我已經安裝文件移動到用戶文件夾C:\Documents and Settings\user\
。安裝程序Falsely將搜索安裝的根目錄而不是Files
目錄,如我的第二個Media
元素的Layout
屬性中指定的那樣。我如何強制安裝程序使用正確的子目錄?