Проблема с разрешением WiX Toolset PermissionEx - приложение не запускается после установки

2

У меня есть приложение в Wpf/С#, и я создал установщик с помощью WiX Toolset. Установщик работает на всех протестированных компьютерах, он не отображает никаких сообщений об ошибках. Однако на некоторых компьютерах приложение не запускается после установки даже с правами администратора. Я считаю, что это какая-то проблема с разрешением, но я не уверен. Как дать разрешения текущему пользователю?

ОБНОВЛЕНИЕ: пока проблема возникла только на двух машинах с Windows 10 Home. Я думал, что это может быть установщик версии, которую я установил.

Ниже приведены наиболее подходящие фрагменты кода.

Любая помощь очень приветствуется. Спасибо.

<Product Id="{2A173950-... }"
       Codepage="UTF-8"
       Name="Xyz"
       Language="1033"
       Version="1.0"
       Manufacturer="Xyz Software"
       UpgradeCode="{8B843496-... }">

<Package InstallerVersion="301"
         Compressed="yes"
         InstallScope="perMachine"
         Manufacturer="Xyz Software"
         Description="Xyz Installer"
         Keywords="Practice,Installer,MSI"
         Comments="(c) 2018, Xyz Software" />

<Feature Id="ProductFeature" Title="Xyz Installer" Level="1">
  <ComponentGroupRef Id="ApplicationComponents" />
  <ComponentGroupRef Id="DataComponents" />
  <ComponentGroupRef Id="SavedFilesEmptyFolder" />
  <ComponentGroupRef Id="StartMenuComponents" />
  <ComponentGroupRef Id="DesktopComponents" />
</Feature>

<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
  <!--Program Files Folder-->
  <Directory Id="ProgramFilesFolder">
    <Directory Id="CompanyFolder" Name="Xyz Software" >
      <Directory Id="ApplicationFolder" Name="Xyz" >
        <Directory Id="DataFolder" Name="Data" >
          <Directory Id="SavedFilesFolder" Name="Saved Files" />
        </Directory>
      </Directory>
    </Directory>
  </Directory>
  <!--Start Menu-->
  <Directory Id="ProgramMenuFolder">
    <Directory Id="StartMenuFolder" Name="Xyz" />
  </Directory>
  <!--Desktop-->
  <Directory Id="DesktopFolder" Name="Desktop" />
</Directory>

<Fragment>
<ComponentGroup Id="ApplicationComponents" Directory="ApplicationFolder">
  <Component Id="CmpXyzExe" Guid="{1EA7372D-... }">
    <File Id="FilXyzExe" Source="Xyz.exe" KeyPath="yes" />
  </Component>
  <Component Id="CmpSetPermissionsApp" Guid="{36CDCE9A-... }" >
    <CreateFolder>
      <util:PermissionEx User="Administrators" GenericAll="yes" />
      <util:PermissionEx User="Users" GenericAll="yes" />
    </CreateFolder>
  </Component>
</ComponentGroup>

<ComponentGroup Id="DataComponents" Directory="DataFolder">
  <Component Id="CmpXyzDic" Guid="{A32B6F47-... }">
    <File Id="FilXyzDic" Source="Xyz.dic"  />
  </Component>
</ComponentGroup>


<Fragment>
<ComponentGroup Id="StartMenuComponents" Directory="StartMenuFolder">
  <Component Id="CmpStartMenuShortcuts" Guid="{818AD65E-... }">
    <CreateFolder />
    <Shortcut Id="SctApplication"
              Name="Xyz"
              Target="[ApplicationFolder]Xyz.exe" />
    <Shortcut Id="SctUninstall"
              Name="Uninstall Xyz"
              Description="Uninstalls Xyz and all of its components"
              Target="[System64Folder]msiexec.exe"
              Arguments="/x [ProductCode]" />
    <RemoveFolder Id="RmvStartMenuComponents"
                  On="uninstall" />
    <RegistryValue Root="HKCU"
                   Key="Software\Microsoft\Xyz"
                   Name="installed"
                   Type="integer"
                   Value="1"
                   KeyPath="yes" />
  </Component>
</ComponentGroup>

<Fragment>
<ComponentGroup Id="DesktopComponents" Directory="DesktopFolder">
  <Component Id="CmpDesktopShortcuts" Guid="{4FC34354-... }">
    <Shortcut Id="SctApplicationDesktop"
              Name="Xyz"
              Target="[ApplicationFolder]Xyz.exe" />
    <RemoveFolder Id="RmvDesktopComponents"
                  On="uninstall" />
    <RegistryValue Root="HKCU"
                   Key="Software\Microsoft\Xyz"
                   Name="installed"
                   Type="integer"
                   Value="1"
                   KeyPath="yes" />
  </Component>
</ComponentGroup>

  • 0
    Вы ожидаете, что приложение запустится сразу после завершения установки? Или вы имеете в виду, что пользователь не может запустить установленное приложение из меню «Пуск» или .exe после установки?
  • 0
    Прошу прощения за непонятность Hemaolle, я хотел сказать, что пользователь не может запустить приложение после установки.
Показать ещё 1 комментарий
Теги:
wpf
wix

1 ответ

0
Лучший ответ

Разрешения: Как указано выше, возможно, сделайте быструю проверку, чтобы увидеть, правильно ли применяются разрешения, как описано здесь: Проверка разрешений.

Зависимость/требование времени выполнения: если это происходит на очень небольшом количестве компьютеров, можно подумать, что причиной является невыполнение требования времени выполнения. Вы уверены, что на этих компьютерах установлена среда исполнения Visual Studio C++? Или какое-то другое требование времени выполнения?

Проблемы запуска отладки: Есть несколько старых ответов с предложениями по отладке. Теперь, когда я смотрю на них, они настолько похожи, что мне нужно перестать повторяться в разных вкусах:

Процедура: Вкратце, я бы попытался определить, есть ли пропущенное время выполнения. Вы можете использовать procmon.exe или dependency walker проверки dependency walker чтобы проверить это. Вы также можете использовать подход отладки, описанный выше, где вы создаете отладочные двоичные файлы и подключаетесь к двоичным файлам во время запуска. При условии, что бинарный файл вообще оторвется от земли.

  • 0
    Используя Dependency Walker, я обнаружил несколько недостающих библиотек.
  • 0
    Это сделало бы это. Может быть больше, конечно. Кстати, хорошо сформулированный вопрос. Я забыл объявить это раньше. Позволь мне сделать это сейчас.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню