2009-11-27 1 views
6

wxs file Атрибут источника файла Исходный атрибут; путь имеет в нем пробел.Как я могу работать с пробелами в моем исходном пути 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: Система не может найти файл 'и' с типом 'Source'.

Я не могу быть уверен, что в моих дорожках не будет пробелов. Как поддерживать пробелы в пути источника?

ответ

6

Попробуйте upgrading до последней версии стабильной версии 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 

редактировать: как показано на Роба в своем ответе, вы можете также использовать light.e xe -b, чтобы указать один или несколько базовых каталогов, в которых можно найти файлы для установки.

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

+1

+1, делает все гораздо менее сложным. К сожалению, документация WiX не объясняет связь между использованием -b для освещения и использованием «SourceDir» в File/@ Source. – saschabeaumont

+0

Теперь я действительно запутался в «SourceDir», поскольку, по-видимому, он имеет 3 разных значения: 1) магическое значение, которое вы должны использовать в '' 2) Свойство установщика Windows, которое указывает на папку, содержащую установочный пакет. 3) Специальное значение, заданное с помощью 'light.exe -b', которое вы можете использовать как« ". Argh! –

+1

Первые два - одно и то же. Третий вариант использует SourceDir, потому что Source наследует его значения от родительских элементов каталога и файла/@ Name. Многие люди просто привыкли всегда указывать File/@ Source вместо использования по умолчанию. –

Смежные вопросы