Изменить место установки приложения UWP из Installshield
Я создал настольное приложение WPF и сгенерировал сборку MSI с помощью Installshield. Я создал установку MSI для установки моего приложения в C:\MyApp\ location вместо использования программных файлов. Работает нормально, как и ожидалось.
Затем я создал и протестировал приложение UWP, используя тот же проект InstallShield. Для этого Installshield 2016 поддерживает интеграцию Desktop Bridge - http://learn.flexerasoftware.com/IS-WBNR-InstallShield-2016-Whats-New.
Я заметил, что приложение UWP установлено в папке по умолчанию (C:\Program Files\WindowsApps), а не в папке, определенной в Installshield.
Я хочу изменить это местоположение из моего проекта InstallShield. Пожалуйста, помогите мне найти способ решить эту проблему.
2 ответа
Для приложений UWP мы не можем изменить их место установки во время установки.
Как вы знаете, по умолчанию приложения UWP будут установлены в C:\Program Files\WindowsApps
, Вы можете установить папку по умолчанию в меню "Настройки" → " Система" → " Хранилище" → " Изменить место хранения нового содержимого".
Вы можете выбрать один диск в раскрывающемся меню под заголовком " Новые приложения будут сохранены в " и затем нажать " Применить". На выбранном вами диске будет создана новая папка с именем "WindowsApps". И любое новое приложение UWP будет установлено в эту папку. Обратите внимание, что Windows 10 будет устанавливать новые приложения только в текущем выбранном месте. Существующие приложения не перемещаются в новое местоположение.
Если вы хотите изменить местоположение установки для одного приложения, вам нужно перейти в " Настройки" → " Приложения и компоненты" и нажать кнопку " Переместить".
Однако это доступно только после того, как вы установили приложение, и оно может перемещать приложение только на другой диск. Нет способа указать место установки для какой-либо другой папки, например C:\MyApp\
и т.п.
Это вопрос XY, поэтому этот ответ может быть не совсем связан с заданным вопросом.
Знание местоположения, в котором пакет приложений UWP не помогает ни в малейшей степени. Это хорошо для изучения системы в качестве разработчика, но это почти бесполезно для выпущенного приложения. Вместо этого вам нужен другой способ для запуска вашего приложения.
UWP предлагает несколько способов запустить ваше приложение:
- Использовать протокол (т.е. пользовательскую схему в URL)
- Используйте псевдоним (то есть альтернативное имя программы командной строки)
- Использовать API ( IApplicationActivationManager:: ActivateApplication)
Первые два из них требуют модификации вашего AppxManifest. Поскольку InstallShield не ставит этот фронт и центр, он предлагает альтернативные способы заполнения этих частей манифеста. (Третий вместо этого требует изменений в коде, который вызовет это приложение, поэтому я не буду обсуждать это дальше.)
протокол
Чтобы заполнить обработчик протокола из InstallShield, просто добавьте обработчик протокола в реестр. При сборке AppxManifest InstallShield прочитает эту регистрацию и переведет ее в записи протокола манифеста.
кличка
Чтобы заполнить AppExecutionAlias из InstallShield, просто App Paths
ключ реестра для каждой соответствующей точки входа. App Paths
ключ реестра установлен в HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths
, и вы должны использовать следующий формат для вашего псевдонима:
HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Пути к приложениям \< alias.exe>
(По умолчанию) = < путь \ к \ вашему \ exe>
Для простоты ваш путь должен использовать ссылки на свойства ([ProgramFilesFolder]Company Name\Product Name\executable.exe
) или ссылки на компоненты ([$componentid]
- обычно исполняемый.exe или NewComponent23). При создании AppxManifest InstallShield прочитает эту регистрацию и переведет ее в записи псевдонимов манифеста.