Изменить место установки приложения UWP из Installshield

Я создал настольное приложение WPF и сгенерировал сборку MSI с помощью Installshield. Я создал установку MSI для установки моего приложения в папку C:\MyApp\ вместо использования программных файлов. Он работает нормально, как и ожидалось.

Затем я создал и протестировал приложение UWP, используя тот же проект InstallShield. Для этого Installshield 2016 поддерживает интеграцию Desktop Bridge — http://learn.flexerasoftware.com/IS-WBNR-InstallShield-2016-Whats-New.

Я заметил, что приложение UWP установлено в папку по умолчанию (C:\Program Files\WindowsApps), а не в папку, указанную в Installshield.

Я хочу изменить это местоположение из моего проекта InstallShield. Пожалуйста, помогите мне найти способ решить эту проблему.


person Rajkumar G    schedule 29.05.2017    source источник
comment
Зачем нужно контролировать местоположение? Вы не можете вызывать исполняемые файлы из пакета приложения UWP обычными способами, поэтому, помимо проблем с хранилищем (которые рассматриваются в ответе Джея Зуо), нет особых причин заботиться о том, где находится пакет. Вам нужно что-то вроде AppExecutionAlias?   -  person Michael Urman    schedule 30.05.2017
comment
Спасибо @MichaelUrman. Я хочу вызвать свое приложение извне (из другого приложения/драйвера) на основе некоторых условий. Поэтому я хочу, чтобы путь к приложению был постоянным и статическим. Это не должен быть автоматически сгенерированный путь, как в приложении UWP (C:\Program Files\WindowsApps\Product-name_1.0.0.1_x86__SOME_KEY\VFS\AppVPackageDrive). Можем ли мы использовать AppExecutionAlias ​​в Installshield?   -  person Rajkumar G    schedule 01.06.2017


Ответы (2)


Для приложений UWP мы не можем изменить их место установки во время установки.

Как вы знаете, по умолчанию приложения UWP будут установлены в C:\Program Files\WindowsApps. вы можете выбрать место установки по умолчанию в разделе НастройкиСистемаХранилищеИзменить место сохранения нового контента. введите здесь описание изображения
Вы можете выбрать один диск из раскрывающегося меню в разделе "Новый приложения будут сохраняться в", а затем нажмите Применить. На выбранном вами диске будет создана новая папка с именем «WindowsApps». И любое новое приложение UWP будет установлено в эту папку. Обратите внимание, что Windows 10 будет устанавливать новые приложения только в выбранное в данный момент место. Существующие приложения не перемещаются в новое место.

Если вы хотите изменить место установки для одного приложения, перейдите в раздел НастройкиПриложения и функции и нажмите кнопку Переместить. кнопка. введите здесь описание изображения
Однако это доступно только после того, как вы установили приложение, и его можно переместить только на другой диск. Невозможно указать место установки в какую-либо другую папку, например C:\MyApp\ и т. д.

person Jay Zuo    schedule 30.05.2017
comment
Спасибо @JayZuo за ваш ответ. Я понял использование и ограничения пути установки из вашего ответа. Но я хочу вызвать свое приложение извне (из другого приложения/драйвера) на основе некоторых условий. Поэтому я хочу, чтобы путь к приложению был постоянным и статическим. Это не должен быть автоматически сгенерированный путь, как в приложении UWP (C:\Program Files\WindowsApps\Product-name_1.0.0.1_x86__SOME_KEY\VFS\App‌​VPackageDrive). Можем ли мы использовать AppExecutionAlias ​​в Installshield или у нас есть альтернативный подход? - person Rajkumar G; 01.06.2017
comment
@RajkumarG Да, AppExecutionAlias ​​был бы одним из способов, которым вы можете попробовать. Другим способом было бы использование протокола. Для получения дополнительной информации см. Запустите свое приложение по-разному. - person Jay Zuo; 01.06.2017

Это немного 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\App Paths\‹alias.exe

(по умолчанию) = ‹путь\к\вашему\exe

Для простоты ваш путь, вероятно, должен использовать либо ссылки на свойства ([ProgramFilesFolder]Company Name\Product Name\executable.exe), либо ссылки на компоненты ([$componentid] — обычно исполняемый файл.exe или NewComponent23). При создании AppxManifest InstallShield прочитает эту регистрацию и преобразует ее в записи псевдонима манифеста.

person Michael Urman    schedule 01.06.2017