Установщик WiX должен всегда запускаться как администратор

Я разработал собственный установщик с WiX для приложения .NET WPF. Он отлично работает, если я щелкнул правой кнопкой мыши и запустил его как администратора, однако при запуске без него некоторые компоненты не могут быть установлены из-за недостаточных привилегий.

Компоненты включают SQL Server Express 2008 R2, FoxIt Reader, компонент ActiveX и некоторые другие. Это также требует, чтобы некоторые скрипты SQL запускались во вновь установленной базе данных - в любом случае все они требуют прав администратора.


Я попробовал добавить в пакет node атрибуты InstallScope = "perMachine" и InstallPrivileges = "повышенные", но это, похоже, не меняет.

Я уверен, что это что-то глупое, но я не нашел ничего в ссылке или в Интернете.

Ответы

Ответ 1

Я думаю, если вы просто добавите

<Property Id="MSIUSEREALADMINDETECTION" Value="1" />

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

Ответ 2

Для меня я должен был запустить команду реестра, чтобы удалить переменную системной среды с помощью элемента CustomAction WiX, требующего прав администратора.

Использование CustomAction → Impersonate = "no" работало для меня, как указано в post fooobar.com/questions/349983/....

Пользовательский код действия WiX:

<CustomAction Id = "Uninstall_MYSYSENV"
              Directory  = "INSTALLFOLDER"
              ExeCommand = 'cmd.exe /c &quot;reg delete       "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session    Manager\Environment" /v MYSYSENV /f&quot;'
              Execute    = "deferred"
              Impersonate= "no"
              Return     = "asyncNoWait"
              />

<InstallExecuteSequence>
      <Custom Action="Uninstall_MYSYSENV"
              After="InstallInitialize">Installed AND NOT UPGRADINGPRODUCTCODE</Custom>
</InstallExecuteSequence>

Ответ 3

Добавьте это в свой элемент пакета

<Property Id="ALLUSERS" Value="1" />    <!--equals to install="permachine" at package element but this element depricated -->
<Property Id="MSIUSEREALADMINDETECTION" Value="1" /> 

<Condition Message="Please Run as Administrator.">
      Privileged
</Condition>

Затем создайте простой файл sfx для файла MSI с помощью Winrar и следующих параметров:

  • Вкладка "Настройка"> "Запустить после ввода": имя вашего msi файла

  • Вкладка "Дополнительно"> "Отметить запрос на доступ к административному доступу"