如何在wix源路径中使用空格?

god*_*iew 6 whitespace wix spaces file

wxs文件的File标签Source属性; 路径中有一个空格.

<File Id="_uploads.UserImport.EDS_UserImport.xls" Name="EDS_UserImport.xls" Source="C:\Documents and Settings\kle\Desktop\OspreyMSIGenerator\OspreyMSIGenerator\Published\EDSContainer\uploads\UserImport\EDS_UserImport.xls"></File>
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

candle.exe:错误CNDL0103:系统找不到类型为'Source'的文件'和'.

我无法确定我的路径中是否有空格.如何在源路径中支持空格?

Wim*_*nen 6

尝试升级到最新的稳定wix版本.我用Wix 3.0.5419.0测试了这个,并且接受了带空格的文件路径而没有错误.

在相关的说明中:文件元素不应包含像示例中那样的绝对路径,因为您只能在单个开发人员的PC上构建设置.使用相对于wxs文件位置的路径,如下所示:

<File Source="..\bin\foo.exe" />
Run Code Online (Sandbox Code Playgroud)

或者使用包含文件位置的变量,如下所示:

<File Source="$(var.BinFolder)foo.exe" />
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过调用这样的蜡烛来传递bin文件夹的位置:

candle.exe -dBinFolder=c:\someFolder\bin\ foo.wxs
Run Code Online (Sandbox Code Playgroud)

编辑:如Rob在他自己的回答中所示,您还可以使用light.exe -b开关指定一个或多个可以找到要安装的文件的基目录.


Rob*_*ing 5

@wcoenen 提供了一种机制。不过,我更喜欢使用 light.exe -b 开关。那么你的代码可以是这样的:

<File Id="_uploads.UserImport.EDS_UserImport.xls" Name="EDS_UserImport.xls" Source="SourceDir\Published\EDSContainer\uploads\UserImport\EDS_UserImport.xls"></File>

你的 light.exe 命令行将有:

-b "C:\Documents and Settings\kle\Desktop\OspreyMSIGenerator\OspreyMSIGenerator"

您可以拥有多个 -b 开关,并大大降低 Source 属性的复杂性。

另外,如果您愿意将 File/@Id 和 File/@Name 默认为文件名(在本例中为“EDS_UserImport.xls”),则可以省略它们。