Как правильно настроить AppExecutionAlias, чтобы программу можно было запускать из командной строки?

Package.appxmanifest для этого приложения WPF уже установлен

<uap5:Extension Category="windows.appExecutionAlias" Executable="PROGRAMNAME.exe"
    EntryPoint="Windows.FullTrustApplication">
          <uap5:AppExecutionAlias>
            <uap5:ExecutionAlias Alias="PROGRAMNAME.exe" />
          </uap5:AppExecutionAlias>
        </uap5:Extension>

но когда я пытаюсь запустить PROGRAMNAME из командной строки, появляется сообщение об ошибке

"The system cannot find the file ....WindowsApps..."

Я могу перейти в этот каталог WindowsApps, и даже если я вижу этот файл, его запуск дает мне ту же ошибку.

Я тоже пробовал

<uap3:Extension
    Category="windows.appExecutionAlias"
    Executable="$targetnametoken$.exe"
    EntryPoint="Windows.FullTrustApplication">
          <uap3:AppExecutionAlias>
            <desktop:ExecutionAlias Alias="PROGRAMNAME.exe" />
          </uap3:AppExecutionAlias>
        </uap3:Extension>

Снимок экрана с выводом командной строки и содержимым каталога


person m1l0s    schedule 29.03.2019    source источник


Ответы (1)


Здесь нужно отметить и исправить пару вещей:
1. «Исполняемый файл» должен иметь фактический путь к исполняемому файлу. Обычно EXE находится в подпапке, которую создает проект упаковки VS
2. К сожалению, замена $ targetnametoken $ не работает в расширениях. Таким образом, вы должны указать здесь фактические имена папок и файлов
3. Свойство «Псевдоним» может содержать любое имя, которое вы хотите использовать для запуска вашего приложения, это может быть фактическое имя исполняемого файла или псевдоним по вашему выбору.

  <uap3:Extension
      Category="windows.appExecutionAlias"
      Executable="WpfApp4\WpfApp4.exe"
      EntryPoint="Windows.FullTrustApplication">
    <uap3:AppExecutionAlias>
      <desktop:ExecutionAlias Alias="foo.exe" />
    </uap3:AppExecutionAlias>
  </uap3:Extension>  

Публикую свой рабочий тестовый проект здесь:
https://1drv.ms/u/s!AovTwKUMnowzTN9 / а>

person Stefan Wick MSFT    schedule 30.03.2019
comment
Как видно на скриншоте, даже в WinApps \ есть programname.exe. Там я также вижу каталог, принадлежащий программе, где снова находится programname.exe, но добавление этого пути в Executable по-прежнему не работает. Та же ошибка отображается, даже если я захожу в этот каталог и пытаюсь запустить его. Я попытался добавить этот полный путь с расширениями uap3 и uap5 безуспешно. ЕСЛИ я ошибаюсь в названии программы, я получаю другую ошибку. Я также попытался добавить фактическое имя exe и имя псевдонима. - person m1l0s; 31.03.2019
comment
В своем ответе я поделился своим рабочим тестовым проектом. Пожалуйста, сравните это с вашим. Если это по-прежнему не работает, поделитесь своим проектом, в котором показана проблема, чтобы мы могли просмотреть полную копию. В противном случае мы можем только догадываться. - person Stefan Wick MSFT; 31.03.2019
comment
Это сработало, но пришлось установить Executable="PROJNAME\EXENAME.exe". Это было неожиданно, поскольку exe находится непосредственно в каталоге bin, а у меня нет папок с именем PROJNAME (как и его пространство имен). Я предполагаю, что процесс упаковки создал папку и перемещает туда содержимое - person m1l0s; 02.04.2019