Почему константа Inno Setup {userdesktop} не работает в директиве OutputDir и как это исправить? - PullRequest
1 голос
/ 23 марта 2019

Я создал скрипт Inno Setup, который отлично работает, но я хотел изменить OutputDir, чтобы создать выходной файл на моем рабочем столе.Но вместо создания выходного файла на рабочем столе он создавал подпапку {userdesktop} в том же каталоге, где находится сценарий, а выходные данные были внутри.

Пока я нашел решение, но я считаю, что должен быть лучший способ.Чего мне не хватает?

; these attempts didn't work
[Setup]
OutputDir={userdesktop}
; some more attampts:
OutputDir=userdesktop
OutputDir=userdesktop:
OutputDir="{userdesktop}"

; this workaround worked for me
[Setup]
OutputDir=userdocs:..\Desktop

1 Ответ

4 голосов
/ 23 марта 2019

Константы , такие как {userdesktop}, разрешаются во время установки (на компьютере целевого пользователя), а не во время компиляции (на компьютере разработчика).Поэтому нет смысла использовать константы в директиве только во время компиляции, как OutputDir.И на самом деле их вообще невозможно использовать (так как это бесполезно).

Используя макет каталога профиля пользователя по умолчанию, вы можете использовать префикс userdocs:, как вы это сделали:

[Setup]
OutputDir=userdocs:..\Desktop

Хотя это не идеальное решение, поскольку папка «Документы» может быть перемещена пользователем, и тогда userdocs:..\Desktop не будет указывать на рабочий стол.

Более надежныйрешение заключается в использовании USERPROFILE переменной среды с использованием GetEnv функции препроцессора :

[Setup]
OutputDir={#GetEnv('USERPROFILE')}\Desktop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...