2015-05-06 15 views
0

我已经编写了一个非常小的应用程序,并且正努力为我的解决方案创建一个良好的部署项目。这是一个wpf应用程序,它访问数据库,重新格式化一些数据,将其呈现给用户,并将其作为XML写入,这取决于用户对其他应用程序的选择以继续工作。一切工作非常好。如何在部署后摆脱UAC提示

但是......

当我创建一个InstallShield LE项目和部署,我可以运行没有UAC提示的应用程序。

当我创建一个WiX项目并部署时,我得到一个UAC提示,当我安装和当我运行已安装的应用程序。每次。

我已经搜索,搜索,并问及周围没有工作的解决方案。

有没有建议吗?

+0

我的猜测是WiX会修改文件夹/文件或编辑Windows注册表中要求您允许这些操作的注册表部分。 – 0x8BADF00D

回答

2

您需要显示一些WiX源代码并查看应用程序。

安装本身没有理由影响应用程序的行为。如果应用程序包含提升清单,则应用程序将要求提升,并且requireAdministrator(或highestAvailable)的请求执行级别将负责UAC提示。清单通常嵌入在可执行文件中,显然,安装时,IS或WiX都不会更改exe的内容。

所以对于应用程序:

  1. 您的应用程序的创建可能是在两种情况不同,包含一个嵌入式清单和一个没有。如果使用Visual Studio打开文件作为文件,您可能会看到显示嵌入式清单及其高程要求的RT_MANIFEST节点。

  2. 构建可能会有所不同,因为WiX包含外部应用程序清单文件,该应用程序清单文件会在应用程序运行时导致提升提示。

  3. 如果用户是管理员(highestAvaIlable),您可能会有一个提升的清单,这样管理员将获得提示,而受限用户不会。所以不同的用户会看到不同的行为。

Difference between "highestAvailable" and "requireAdministrator" in manifest in terms of Elevation?

对于安装本身:

  1. 所述的InstallShield设置可以是每用户(不需要海拔)和维克斯一个是每台机器,或至少维克斯具有升级的InstallPrivileges,无论是默认还是因为它在Package元素中都是显式的。
0

加入清单的组件,您的可执行文件,告诉Windows,你希望它运行asInvoke

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity 
      version="1.0.0.0" 
      processorArchitecture="X86" 
      name="Contoso.Frobber" 
      type="win32" 
    /> 

    <description>Frobber Thingy Majiggy</description> 

    <!-- Disable file and registry virtualization --> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
     <security> 
      <requestedPrivileges> 
       <requestedExecutionLevel level="asInvoker" uiAccess="false"/> 
      </requestedPrivileges> 
     </security> 
    </trustInfo> 

</assembly> 

这告诉Windows,你做想要提升。