2010-01-29 46 views
5

我正在從事的項目是從使用VS2008部署/安裝程序切換到WiX,目前我很新。我已經添加了將資源項目的輸出複製到Resources.dll中的代碼,但在舊的VS2008安裝程序文件系統中,還有本地化資源輸出,該輸出當前會生成兩個摺疊(en和es)與另一個dll Resources.resources.dll)。我已經進行了一些搜索,但似乎無法找到將這些文件夾放入msi中的方法,因爲實際上並不知道這些文件夾是否存在並將它們直接放入。有什麼辦法可以做到這一點?如何在包含WiX的MSI中包含Satellite Assemblies(本地化資源)?

回答

6

在您的Wix源文件中爲每個本地化文件夾(en和es)定義<Directory>元素,然後爲其中的衛星程序集定義<Component>元素。

總之,把它們直接放入!

+0

+1感謝您的提示!我創建了一個新的答案來說明你的答案。 – 2013-02-04 07:32:22

5

以下是我爲2種語言工作的內容。

我加入localeDirectoryFR和localeDirectoryJA如下圖所示,對於法國和日本:

<Directory Id='TARGETDIR' Name='SourceDir'> 
    <Directory Id='ProgramFilesFolder' Name='PFiles'> 
     <Directory Id='INSTALLDIR' Name='CmisSync'> 
     <Component Id='CmisSync.exe' Guid='bab5a922-b5c4-4958-ab79-5e303b767a61'> 
      <File Id='CmisSync.exe' Name='CmisSync.exe' Source='!(wix.root)\bin\CmisSync.exe' KeyPath='yes' DiskId='1' /> 
     </Component> 
     [... other components ...] 
     <Directory Id='localeDirectoryFR' Name='fr'> 
      <Component Id='localeComponentFR' Guid='01612d5d-6c9d-46e9-96c5-7105bbbea7db'> 
      <CreateFolder /> 
      <File Id='localeFileFR' Name='CmisSync.resources.dll' Source='!(wix.root)\bin\fr\CmisSync.resources.dll' DiskId='1' /> 
      </Component> 
     </Directory> 
     <Directory Id='localeDirectoryJA' Name='ja'> 
      <Component Id='localeComponentJA' Guid='8d77c457-54b0-41d6-9f1c-c91338b25505'> 
      <CreateFolder /> 
      <File Id='localeFileJA' Name='CmisSync.resources.dll' Source='!(wix.root)\bin\ja\CmisSync.resources.dll' DiskId='1' /> 
      </Component> 
     </Directory> 

然後,我引用他們的特點:

<Feature Id='CmisSyncFeature' Title='CmisSync' Description='CmisSync' Level='1' AllowAdvertise='no'> 
    <ComponentRef Id="CmisSync.exe" /> 
    [... other componentrefs ...] 
    <ComponentRef Id="localeComponentFR" /> 
    <ComponentRef Id="localeComponentJA" /> 
</Feature> 

感謝保羅·拉隆德的小費。