Inno Setup - не позволяет ярлыку на рабочем столе открывать подпапку вместо запуска исполняемого файла с тем же именем - PullRequest
2 голосов
/ 07 октября 2019

Я использую Inno Setup для создания установочных файлов, недавно обнаружил проблему и не вижу обходного пути. Мое приложение не запускается напрямую, оно запускается из другой программы, matlab. Таким образом, мои Files и Icons выглядят так:

[Files]
Source: "include\*"; Excludes: "License"; DestDir: "{app}"; \
    Flags: ignoreversion recursesubdirs createallsubdirs

[Icons]
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{group}\{#MyAppName}"; Filename: matlab; \
    Parameters: "-r ""run '{app}\nCAL\nCAL_RUN.p'"""; IconFilename:"{app}\nCAL.ico";
Name: "{commondesktop}\{#MyAppName}"; Filename: matlab; \
    Parameters: "-r ""run '{app}\nCAL\nCAL_RUN.p'"""; IconFilename:"{app}\nCAL.ico"; \
    Flags: useapppaths

Это прекрасно работает, ЕСЛИ на рабочем столе не будет папки с именем matlab во время запуска Inno Setup compile.

Правильный ярлык на рабочем столе имеет следующие свойства:

Цель

C:\MATLAB\R2018b\bin\matlab.exe -r "run 'C:\Program Files (x86)\Ricardo\Global DoE Toolkit\nCAL\nCAL_RUN.p'"

Начать с

C:\MATLAB\R2018b\bin

Однако, если случайно есть (пустой или нет)) папку с именем matlab на рабочем столе, то установщик создает ярлык со следующими свойствами:

Target

"C:\Users\jse\OneDrive - Ricardo Plc\Desktop\Matlab" -r "run 'C:\Program Files (x86)\Ricardo\Global DoE Toolkit\nCAL\nCAL_RUN.p'"

Запуск в

"C:\Users\jse\OneDrive - Ricardo Plc\Desktop"

И ярлык простооткрывает в Проводнике папку matlab.

Я не могу явно указать часть C:\MATLAB\R2018b\bin\matlab.exe, поскольку у пользователя может быть любая версия matlab в любой папке. Я предполагаю, что установщик получает путь из реестра.

Любая помощь в том, почему он падает, и какое исправление может быть, очень ценится.

1 Ответ

1 голос
/ 07 октября 2019

Используйте matlab.exe в качестве цели ярлыка, чтобы отличить ее от папки matlab.

Filename: matlab.exe;
...