#qt #qt-installer
#qt #qt-installer
Вопрос:
С помощью installer Framework я хотел бы создать установщик для моего приложения. Приложение устанавливается администратором на ПК. Затем приложение используется разными пользователями.
В установщике я создаю ярлыки из исполняемого файла в меню «Пуск».
Это выполняется в installscript.js
командой:
component.addOperation(“CreateShortcut”, “@TargetDir@/application.exe”,
“@StartMenuDir@/Name of Application.lnk”, “workingDirectory=@TargetDir@”);
Проблема сейчас в том, что установщик создает ярлык в меню «Пуск» только для текущего пользователя, например, администратора.
Кроме того, программа удаления видна только для текущего пользователя. Когда я захожу в систему с другим пользователем, приложение не отображается в меню «Пуск».
Как можно создать ярлык, который виден в меню «Пуск» для всех пользователей?
Ответ №1:
Попробуйте
component.addOperation("CreateShortcut", "@TargetDir@/application.exe", "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\<Name of Application>.lnk");
На самом деле, AllUsersStartMenuProgramsPath
доступна переменная, но я только что попробовал ее, и, похоже, она сломана. С его помощью вставляются ссылки C:
.
Как installer.value("os")
, вы должны использовать installer.value("AllUsersStartMenuProgramsPath")
в своем скрипте.
Смотрите последнюю документацию:http://doc-snapshot .qt-project.org/qtifw-master/scripting.html
Я думаю, что ошибка должна быть открыта в их баг-трекере:https://bugreports.qt-project.org/secure/Dashboard.jspa
Комментарии:
1. Я протестировал это сегодня, и переменная AllUsersStartMenuProgramsPath работает нормально, пока я использую ее в функции installer.value(), как вы описали. «@AllUsersStartMenuProgramsPath@/foo.lnk » однако не работает.
2. Обращается ли это также к записям в
Programs and Features
на панели управления Windows?
Ответ №2:
Это работает для меня:
Component.prototype.createOperations = function()
{
component.createOperations();
console.log("creating start menu entries");
if (systemInfo.productType === "windows") {
component.addOperation("Mkdir", "@StartMenuDir@")
component.addOperation("CreateShortcut", "@TargetDir@/README.txt",
"@StartMenuDir@/README.lnk",
"workingDirectory=@TargetDir@",
"iconPath=%SystemRoot%/system32/SHELL32.dll",
"iconId=2", "description=Open README file");
}
}
Обратите внимание, что скрипт создает соответствующий каталог меню «Пуск» перед созданием ярлыков.
Комментарии:
1. Я на самом деле это не создает запись для всех пользователей, я неправильно истолковал вопрос. Я оставляю это здесь на случай, если это поможет кому-либо еще в любом случае.