6

wxs file the File tag Source attribute; the path has a space in it.

<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>

I get this error

candle.exe : error CNDL0103 : The system cannot find the file 'and' with type 'Source'.

I can't be sure that my paths won't have spaces in it. How do I support spaces in the Source path?

4

2 回答 2

6

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

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

<File Source="..\bin\foo.exe" />

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

<File Source="$(var.BinFolder)foo.exe" />

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

candle.exe -dBinFolder=c:\someFolder\bin\ foo.wxs

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

于 2009-11-28T20:51:59.240 回答
4

@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”),则可以省略它们。

于 2009-11-29T21:01:45.503 回答