«Тип возврата несовместим» / Ошибка модуля родного объявления в аппликативном экземпляре

Решения в ответе @ Адриана (фактически скопированные из ответа @ TLama на аналогичный вопрос ) верны для многих ситуаций.

Но это не сработает для [Run] задачи с флагом runasoriginaluser (что подразумевается под флагом postinstall ). То есть переменная не будет распространяться на приложение с общим «Запустить мою программу» на странице «Готово».

Причина в том, что задачи с runasoriginaluser выполняются с помощью невыполненного скрытого родительского процесса установщика Inno Setup. SetEnvironmentVariable изменит среду для установщика, но не для его родительского процесса. К сожалению, родительский процесс установщика нельзя контролировать (imo).

В качестве обходного пути для установки переменной для задач runasoriginaluser вам необходимо ввести промежуточный процесс между родительским процессом установщика и задание и промежуточный процесс задает переменную.

Такой промежуточный процесс может легко быть cmd.exe с его командой set :

[Run]
Filename: "{cmd}"; Parameters: "/C set MYVAR=MyValue & ""{app}\MyProg.exe"""; \
    Description: "Run My Program"; Flags: postinstall runhidden

Флаг runhidden скрывает окно консоли cmd.exe, а не приложение (если оно является графическим приложением). Если это консольное приложение, используйте start , чтобы запустить его в своем собственном (видимом) окне консоли.

0
задан Damian 16 January 2019 в 08:10
поделиться

1 ответ

Вы должны использовать устаревший компилятор Frege.

Я предлагаю вам получить последний компилятор здесь: https://github.com/Frege/frege/releases/tag/3.25alpha

(я только что попробовал «Три» пример, и это скомпилировано нормально)

0
ответ дан Ingo 16 January 2019 в 08:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: