0

我创建了一个刻录包安装程序,它安装了几个 MSI,都是 perMachine。捆绑包在安装时会正确提升。如果我使用 /uninstall 命令行运行 bundle exe,它会在卸载时提升。如果我从 Windows 10 的“应用程序和功能”窗口卸载,它会被提升(这是因为无论您的捆绑包设置如何,应用程序和功能似乎都在这里盲目地提升)。

但是,如果我从控制面板的“程序和功能”对话框中卸载,卸载将不会提升(即使日志似乎表明它确实如此)。有问题的安装程序确实需要提升才能执行某些操作(例如干净地停止服务)。

Bundle.wxs 片段:

  <Bundle Name="Test Bundle"
          Version="1.0.0.0"
          Manufacturer="My Company, Inc."
          Copyright="Copyright 2016 My Company, Inc."
          IconSourceFile="Resources\Icons.ico"
          DisableModify="yes"
          UpgradeCode="$(var.UpgradeCode)">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkSidebarLicense">
      <bal:WixStandardBootstrapperApplication
           LogoFile="Resources/logo.png"
           LogoSideFile="Resources/logoside.png"
           ThemeFile="Resources/HyperlinkSidebarTheme.xml"
           LocalizationFile="Resources/HyperlinkTheme.wxl"
           LicenseUrl="" />
    </BootstrapperApplicationRef>

    <Chain>
      <MsiPackage Id="MyMsi.msi"
                SourceFile="$(var.SolutionDir)Installer\MyMsi.msi"
                Compressed="yes"
                ForcePerMachine="yes"
                Vital="yes">
      </MsiPackage>

      <MsiPackage Id="MyOtherMsi.msi"
                SourceFile="$(var.SolutionDir)Installer\MyOtherMsi.msi"
                Compressed="yes"
                ForcePerMachine="yes"
                Vital="yes">
      </MsiPackage>
    </Chain>
</Bundle>

我已将两个 MsiPackage 设置为“ForcePerMachine”以确保捆绑包提升。两个 MSI 的包元素都设置了 InstallScope="perMachine"。如果我自己安装 MSI,从程序和功能卸载时它们都会提升。

我在这里有点不知所措。

4

1 回答 1

0

好的,EXE 显然是自动从 ARP 提升运行的(MSI 不是。这在 MSI 的卸载程序日志中得到确认:

MSI (s) (9C:F4) [17:20:38:470]:MSI_LUA:不需要凭据提示,用户是管理员

于 2016-10-31T18:49:16.820 回答