Ответ 1
Это определенно из-за долгого пути. Обычно приложения Windows не могут обрабатывать пути длиннее MAX_PATH
(260 символов).
См. Имена файлов, путей и пространств имен на MSDN.
Обычный обходной путь - префикс пути с \\?\
(Снова см. Статью MSDN выше). Префикс может использоваться только для абсолютных путей. Но компилятор Inno Setup подавляет это с помощью атрибута Source
. Он ищет :
и принимает только путь, который имеет букву диска только перед :
или использует префиксы compiler:
или userdocs:
.
Вы можете взломать это, используя UNC-путь с идентификатором тома (следовательно, без двоеточия).
Используйте команду mountvol
чтобы найти UNC-путь для вашего исходного диска.
И тогда у вас будет такая же проблема с длинным путем с атрибутом DestDir
при установке (не при компиляции). Там нет проблем с двоеточием, поэтому вы можете просто использовать префикс \\?\
.
Source: "\\?\Volume{bb919c3e-bdb1-42b8-9601-6715becd8683}\{#SourcePath}Encore.Warehouse.UI\bin\Warehouse_Release\warehouse\*"; \
DestDir: "\\?\{app}\warehouse"; Flags: ignoreversion recursesubdirs createallsubdirs
Конечно, если проблема вызвана тем, что корневой путь уже слишком длинный, вы можете решить проблему, просто переместив исходные файлы в папку с более коротким путем. Или вы можете использовать subst
для создания виртуального диска, или вы можете создать символическую ссылку/каталог.