Почему мой MSI запрашивает права администратора? - PullRequest
1 голос
/ 31 мая 2019

Я пытаюсь заставить наш MSI работать для пользователей без прав администратора.

Я использую WixUI_Advanced, но все равно получаю приглашение администратора, даже когда выбираю «Установить только для вас»:

installation scope dialog

Глядя на журналы MSI, я вижу, что требуется повышение прав, но я не знаю, почему:

MSI (s) (68:54) [10:45:25:359]: Product not registered: beginning first-time install
MSI (s) (68:54) [10:45:25:359]: PROPERTY CHANGE: Deleting ALLUSERS property. Its current value is '1'.
MSI (s) (68:54) [10:45:25:359]: Product {32799511-D146-40F4-ACA7-5A76E6E38854} is not managed.
MSI (s) (68:54) [10:45:25:359]: Machine policy value 'AlwaysInstallElevated' is 0
MSI (s) (68:54) [10:45:25:359]: User policy value 'AlwaysInstallElevated' is 0
MSI (s) (68:54) [10:45:25:359]: MSI_LUA: Elevation required to install product, will prompt for credentials

Есть идеи, почему меня запрашивают права администратора?


Редактировать

Я создал пустой проект Wix, использовал WixUI_Advanced UI, и у меня возникла та же проблема: /

1 Ответ

3 голосов
/ 01 июня 2019

Запрос прав администратора : в приведенном ниже примере WiX будет запрашиваться повышение прав для на машину , но не для на пользователя установка.


Heads-Up : лично мне не нравятся настройки на пользователя.Я считаю, что они являются пограничными анти-паттернами по моему субъективному мнению.Это связано с плохой работоспособностью (обновления, исправления и т. Д.) И рядом других деталей, таких как сомнительные перенаправления папок и некоторые другие факторы «большого удивления».Ребята из Advanced Installer суммировали также ряд ограничений: Advanced Installer: ограничения для каждого пользователя .


WiX Issue 5481 : я добавил ответ, но удалил его.Это не сработало должным образом.Я заглянул в базу данных WiX Issues , и это известная проблема: https://github.com/wixtoolset/issues/issues/5481. Последний комментарий от NicMay выглядел интересно.Ниже я сделал быстрый макет, включив его / ее предложения с некоторыми изменениями.

Отказ от ответственности : приведенный ниже образец имеет ряд дефектов и предназначен только длякак "runnable sample".Существуют проблемы с проверкой MSI из-за быстрого решения, которое я использовал (используйте ярлык, чтобы увидеть, где установлен файл, щелкните правой кнопкой мыши и перейдите "Properties").Кнопка "Create New Folder" в диалоговом окне пользовательской установки также содержит ошибку.Я все еще опубликую его, чтобы посмотреть, поможет ли оно вам:

NB! : создать новый проект WiX, добавить ссылку на WixUIExtension.dll, затем следуйте комментариям.Запустите программу установки и нажмите "Advanced", чтобы выбрать установку для каждого пользователя или компьютера.

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

<!--CHANGE #1: Add an UpgradeCode GUID below -->

  <Product Id="*" Name="PerUserOrPerMachine" Language="1033" Version="1.0.0.0"
           Manufacturer="Hobbit" UpgradeCode="PUT-GUID-HERE">    
    <Package InstallerVersion="200" Compressed="yes" />

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate EmbedCab="yes" />
    <Feature Id="ProductFeature" Title="PerUserOrPerMachine" Level="1" />      

<!--CHANGE #2: Here we channel "hacker" NicMay with his / her dialog event tweaks mentioned in the WiX issue 5481 -->

    <UI>
      <UIRef Id="WixUI_Advanced" />
      <Publish Dialog="InstallScopeDlg" Control="Next" Property="MSIINSTALLPERUSER" Value="1" Order="3">WixAppFolder = "WixPerUserFolder"</Publish>
      <Publish Dialog="InstallScopeDlg" Control="Next" Property="MSIINSTALLPERUSER" Value="{}" Order="2">WixAppFolder = "WixPerMachineFolder"</Publish>
      <Publish Dialog="InstallScopeDlg" Control="Next" Event="DoAction" Value="WixSetDefaultPerMachineFolder" Order="3">WixAppFolder = "WixPerMachineFolder"</Publish>
      <Publish Dialog="InstallScopeDlg" Control="Next" Event="DoAction" Value="WixSetDefaultPerUserFolder" Order="3">WixAppFolder = "WixPerUserFolder"</Publish>
    </UI>

    <Property Id="ApplicationFolderName" Value="PerUserPerMachine" />
    <Property Id="WixAppFolder" Value="WixPerMachineFolder" />

<!--CHANGE #3: Add components and files as appropriate -->

    <Directory Id="TARGETDIR" Name="SourceDir">

<!--CHANGE #4: Make sure DesktopFolder is defined -->

      <Directory Id="DesktopFolder" />
      <Directory Id="ProgramFilesFolder">

<!--CHANGE #5: Crucial: Make sure Directory Id is APPLICATIONFOLDER (referenced elsewhere) -->

        <Directory Id="APPLICATIONFOLDER" Name="PerUserOrPerMachine">
          <Component Feature="ProductFeature" Guid="{5A74A1EE-0AD3-4C48-9E6B-4E4E3712A8BB}">

<!--CHANGE #6: Hard coded path below for simplicity, change path or replace construct -->

            <File Source="D:\My Test Files\MyTestApplication.exe">
              <Shortcut Id="AppDesktopShortcut" Name="PerUserOrPerMachine" Directory="DesktopFolder"  />
            </File>

            <RegistryValue Root="HKCU" Key="Software\My Company\My Product" Name="installed" Type="integer" Value="1" KeyPath="yes" />
          </Component>

        </Directory>
      </Directory>
    </Directory>

  </Product>

</Wix>

Ссылки :

...