Inno Setup не может обработать исходный путь с пробелом - PullRequest
1 голос
/ 05 ноября 2019

В моем приложении есть этот каталог, который мне нужно включить в установочный пакет:

bin\Win Files\*

Итак, в разделе [Files] у меня есть строка:

Source: "bin\Win Files\*";     DestDir: "{app}\bin\Win Files"; Flags: ignoreversion; Permissions: everyone-modify

Но во время компиляции он продолжает говорить, что не может найти этот каталог из-за пробела в пути, точное сообщение об ошибке:

No files found matching "C:\dev\packages\MyApp\bin\Win Files\*"

Я пробовал следующее, все не удалось:

Source: """bin\Win Files\*"""
Source: "\"bin\Win Files\*\""
Source: '"bin\Win Files\*"'

Этот каталог должен быть назван так, что мне делать?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Я использую это:

[Files]
; Main application
Source: "{#SourceDir}\*"; DestDir: "{app}\"; Flags: recursesubdirs ignoreversion;

, чтобы скопировать все мои файлы за один раз в установщик. Обратите внимание на флаг recursesubdirs. Я думаю, что пробелы в пути (упоминаемые здесь в переменной с именем SourceDir) на самом деле не являются проблемой здесь.

0 голосов
/ 06 ноября 2019

Это связано с неправильным пониманием механизма сканирования структуры каталогов / файлов в Inno Setup.

Прежде всего, как отметил @Martin Prikryl, можно включить путь, в котором есть пробел.

Я думаю, что следующие два правила являются ключом к этой проблеме:

  1. Нельзя указать папку, в которой нет автономных файлов (например, пустую папку или папку, в которой есть только подкаталоги). В моем случае: у меня есть следующая структура файла для этого вопроса:

    bin\Win Files\Libs\ bin\Win Files\Plugins\

Так что Source: "bin\Win Files\*"; не удастся. Если в папке "bin\Win Files\" есть хотя бы один автономный файл, то строка источника будет работать.

Inno Setup требует, чтобы каждая папка была явно указана в разделе [Files], как показано ниже:

Source: "bin\Win Files\Libs\*"; DestDir: "{app}\bin\Win Files\Libs"; Flags: ignoreversion; Permissions: everyone-modify Source: "bin\Win Files\Plugins\*"; DestDir: "{app}\bin\Win Files\Plugins"; Flags: ignoreversion; Permissions: everyone-modify

, так как Source: "bin\Win Files\*"; НЕ будет автоматически включать подкаталоги, он используется только для включения автономных файлов в папку bin\Win Files\.

...