微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为我的 msi 创建“隐形”引导程序

如何解决为我的 msi 创建“隐形”引导程序

我有一个用 WiX 创建的 msi。我不需要创建链包,但我确实需要能够让用户右键单击安装程序并选择“以管理员身份运行”。在 Windows 中使用 MSI 无法做到这一点,只能使用 EXE。

有没有办法创建一个没有自己的 UI 的引导程序 exe 来启动我的 msi?

这就是我认为需要这样做的原因(以防有其他解决方案):

我的 WiX 安装程序使用以下代码安装证书:

<iis:Certificate Id="ClientCert"
                                     Name="MyClientCert"
                                     StoreName="personal"
                                     StoreLocation="localMachine"
                                     Request="no"
                                     Overwrite="yes"
                                     BinaryKey="ClientCertBinary"
                                     PFXPassword="mypassword"/>

当我以管理员身份登录时在某些计算机上运行它时,证书安装正常。但是当我在其他一些计算机上运行它时,同时登录管理员帐户时,安装失败并出现以下错误

InstallCertificates:  Error 0x80090010: Failed to open PFX file.
InstallCertificates:  Error 0x80090010: Failed to get SHA1 hash of certificate.
InstallCertificates:  Error 0x80090010: Failed to resolve certificate: MyClientCert

我在另一篇文章中读到 UAC 有时会在这方面表现不同。该人建议右键单击并选择“以管理员身份运行”。我通过以管理员身份打开命令窗口并运行 msi 来尝试此操作,它的效果非常好。但是,当我们向客户发布 msi 时,不能选择打开命令窗口。因此需要一个 exe 引导程序。

解决方法

这并不是您问题的真正答案,但您可以通过添加以下注册表项来为 MSI 文件右键单击“以管理员身份运行”选项:

  • 在 HKCU hive 中添加没有管理员权限的选项:

      Windows Registry Editor Version 5.00
    
      [HKEY_CURRENT_USER\SOFTWARE\Classes\Msi.Package\shell\RunAs]
      "HasLUAShield"=""
    
      [HKEY_CURRENT_USER\SOFTWARE\Classes\Msi.Package\shell\RunAs\Command]
      @="\"C:\\Windows\\System32\\msiexec.exe\" /i \"%1\" %*"
    
  • 添加具有管理员权限的选项:

      Windows Registry Editor Version 5.00
    
      [HKEY_CLASSES_ROOT\Msi.Package\shell\RunAs]
      "HasLUAShield"=""
    
      [HKEY_CLASSES_ROOT\Msi.Package\shell\RunAs\Command]
      @="\"C:\\Windows\\System32\\msiexec.exe\" /i \"%1\" %*"
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。