Qt Installer Framework не регистрирует тип файла - PullRequest
3 голосов
/ 06 ноября 2019

Я пытаюсь использовать Qt Installer Framework (версия 3.1 в windows) для создания установщика моего пакета . Пакет, который я использую для тестирования, - это средство просмотра изображений, которое может загружать пользовательский формат файла: .cjpg (который по сути такой же, как jpg, но с другим именем). Этот проект можно найти здесь .

Файл pacakge xml включает в себя следующий скрипт:

function Component()
{
  // default constructor
}

Component.prototype.createOperations = function()
{
  component.createOperations();

  if (systemInfo.productType ==  "windows")
  {
    component.addOperation("Execute","{0,3010}","@TargetDir@/VC_redist.x64.exe","/quiet","/norestart");
    component.addOperation("CreateShortcut",
                   "@TargetDir@/image_view.exe",
                   "@StartMenuDir@/image_view.lnk",
                   "iconPath=@TargetDir@/image_view.ico")
    component.addOperation("CreateShortcut",
                   "@TargetDir@/image_view.exe",
                   "@DesktopDir@/image_view.lnk",
                   "iconPath=@TargetDir@/image_view.ico")
    component.addOperation("RegisterFileType",
                   ".cjpg",
                   "@TargetDir@/image_view.exe '%1'",
                   "Custom JPG file extension",
                   "text/plain",
                   "@TargetDir@/cjpg_file_icon.ico")
  }
}

Этот скрипт устанавливает VC_redist, потому что я компилирую с использованием MSVCкомпилятор и, насколько я читал, нужен. Кроме того, он создает рабочий стол и ярлыки меню «Пуск». Эти три части работают нормально. Тем не менее, часть с ассоциацией нового типа файла (.cjpg) с программой не работает (значок не отображается, и программа не открывается, когда вы нажимаете файл). Я следовал этому руководству , чтобы добраться до этой точки. Единственное различие, которое я ценю в отношении операции с регистрацией файлов, заключается в том, что в учебнике определены идентификатор значка и идентификатор ProgId. Если я попытаюсь изменить эту часть на:

    component.addOperation("RegisterFileType",
                   ".cjpg",
                   "@TargetDir@/image_view.exe '%1'",
                   "Custom JPG file extension",
                   "text/plain",
                   "@TargetDir@/cjpg_file_icon.ico",
                   "ProgId=ImageViewer.cjpg")

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

    component.addOperation("RegisterFileType",
                   ".cjpg",
                   "@TargetDir@/image_view.exe '%1'",
                   "Custom JPG file extension",
                   "text/plain",
                   "@TargetDir@/cjpg_file_icon.ico", 0,
                   "ProgId=ImageViewer.cjpg")

или:

    component.addOperation("RegisterFileType",
                   ".cjpg",
                   "@TargetDir@/image_view.exe '%1'",
                   "Custom JPG file extension",
                   "text/plain",
                   "@TargetDir@/cjpg_file_icon.ico", "iconId=0",
                   "ProgId=ImageViewer.cjpg")

, я получаю следующую ошибку при установке:

Error during installation process (com.vendor.image_view):
Invalid arguments in RegisterFileType: 6 arguments given, 2 to 5 arguments expected in the form: <extension> <command> [description[contentType[icon]]].

Любые идеи о том, какправильно связать расширение файла с предоставленным значком файла и программой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...