如何使用我的wix源代码路径中的空格?

问题描述:

wxs文件标签源属性;路径中有一个空间。如何使用我的wix源代码路径中的空格?

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

我得到这个错误

candle.exe:错误CNDL0103:系统无法找到文件 '和' 有型 '来源'。

我不能确定我的路径中没有空格。如何在源路径中支持空格?

尝试upgrading到最新的stable wix版本。我用Wix 3.0.5419.0测试了这个,并且接受空格的文件路径没有错误。

在相关说明:文件元素不应该包含像在你的例子中的绝对路径,因为你只能在一个开发人员的个人电脑上建立安装。使用相对路径的WXS文件的位置,而不是像这样:

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

,或者使用一个包含文件的这样的位置的变量:

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

然后,您可以通过

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

编辑:通过调用蜡烛这样的bin文件夹的位置,在他自己的答案显示罗布,你还可以使用light.e xe -b开关指定可以找到要安装的文件的一个或多个基本目录。

@ 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属性。

此外,如果您发现文件/ @ ID和文件/ @名称可以忽略文件名(在本例中为“EDS_UserImport.xls”),则可以将其保留。

+1

+1,使得一切都不复杂。不幸的是,WiX文档似乎没有解释使用-b for light和使用File/@ Source中的“SourceDir”之间的关系。 – saschabeaumont 2009-11-29 22:47:37

+0

现在我对“SourceDir”非常困惑,因为它显然有3种不同的含义:1)您必须在''中使用魔法值2)Windows安装程序属性指向包含安装包的文件夹3)使用'light.exe -b'设置的特殊值,您可以将其用作“”。哎呀! – 2009-11-30 15:59:35

+1

前两个是一样的东西。第三个选项使用SourceDir,因为Source从父目录元素和File/@ Name继承它的值。很多人习惯于总是指定File/@ Source而不是使用默认值。 – 2009-12-04 05:21:37