Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/installation/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Installation 如何为有限(非管理员)用户进行设置_Installation_Windows Installer - Fatal编程技术网

Installation 如何为有限(非管理员)用户进行设置

Installation 如何为有限(非管理员)用户进行设置,installation,windows-installer,Installation,Windows Installer,我已经用VisualStudio2008(SP1)为Office2007插件创建了一个VisualStudio安装项目。安装程序仅将文件复制到每个用户的位置(LocalAppData),并仅将注册表设置写入HKEY_CURRENT_user),但在Windows 7下运行时,MSI会在开始复制文件之前请求管理员凭据。安装程序在Windows XP上的有限用户帐户下运行,但在Windows 7下,似乎需要管理员权限 我还没有找到一种方法来删除管理员提升要求,我想知道如何做到这一点,或者如果Visu

我已经用VisualStudio2008(SP1)为Office2007插件创建了一个VisualStudio安装项目。安装程序仅将文件复制到每个用户的位置(
LocalAppData
),并仅将注册表设置写入
HKEY_CURRENT_user
),但在Windows 7下运行时,MSI会在开始复制文件之前请求管理员凭据。安装程序在Windows XP上的有限用户帐户下运行,但在Windows 7下,似乎需要管理员权限

我还没有找到一种方法来删除管理员提升要求,我想知道如何做到这一点,或者如果Visual Studio安装项目无法做到这一点

更新2010-11-03(更多详细信息)


当我构建Visual Studio安装项目时,它会创建一个Setup.exe和一个MSI文件。Visual Studio 2008似乎无法对setup.exe的创建方式或MSI文件的创建方式提供足够的控制。setup.exe文件似乎仅用于安装my Office 2007加载项可能需要的任何先决条件。安装实际Office 2007加载项的是可以独立运行的MSI文件。我想学习如何标记MSI文件,使其不要求管理员权限,因为我的MSI文件仅将文件复制到每个用户的位置,并且仅将注册表设置写入
HKEY_CURRENT_user

如果您的安装程序名为'setup.exe'或'install.exe',Win7“知道”它是一个安装程序,默认情况下将在“需要管理员”模式下运行。您需要为安装程序添加清单(内部或外部),以告知它以较小的权限运行

MSDN的清单示例如下所示。将值“IsUserAdmin”更改为程序名,然后将其另存为“executablename.exe.manifest”,保存在exe旁边的文件夹中

<?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="IsUserAdmin"
     type="win32"/> 
  <description>Description of your application</description> 
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>
</assembly>


更多信息。

我相信我已经在本页找到了答案:


如何构建标准用户包

要使软件包只安装到标准用户有权限的位置,这需要一些工作。其中一些要求是

  • 在InstallUISequence中使用Type 51自定义操作始终取消ALLUSERS(每个用户选项)

  • 文件只能写入标准用户有权访问的文件夹。假设ALLUSERS始终设置为每用户设置,则可以使用可重定向文件夹属性,但不能使用ProgramFilesFolder,因为它不会对每用户进行重定向

  • 将应用程序安装到LocalAppDataFolder下的位置

  • 所有注册表设置都应写入HKCU,HKCU在注册表表的根列中为1

  • 翻转摘要信息流中单词计数属性的第3位,表示不需要凭证提示。

  • 如果您有一个引导程序(通常名为setup.exe),请将requestedExecutionLevel显示为运行Invoker

  • 通过ICE验证,因为ICE检查每个用户和每个机器状态的混合是否不正确

  • 从标准用户帐户和提升的命令提示符进行测试,以确认行为

  • 提供用户关于软件包特定于用户的特性的文档,因为这在今天的应用程序安装中是不典型的


  • 注意:第5步可以使用微软的MSI编辑工具Orca完成。在Orca中打开MSI文件,选择查看-->摘要信息。。。然后选中“UAC兼容”复选框

    注#2:步骤5可以使用Microsoft SDK中包含的WiSumInf.vbs示例脚本文件完成:C:\Program Files\Microsoft SDK\Windows\v7.0\Samples\sysmgmt\msi\scripts\WiSumInf.vbs

    注意#3:在Visual Studio Step项目中,似乎可以通过右键单击安装项目,选择查看-->用户界面,获取“安装/启动/安装文件夹”页面的属性,并将“InstallAllUsersVisible”设置为False来完成步骤1

    注意#4:执行步骤5的另一种方法是使用“Windows安装程序开发人员的Windows SDK组件”中包含的msinfo.exe工具

    除了注释#4:假设您使用的是长文件名和压缩介质(MSI的默认行为),PostBuildEvent命令类似于:

    "C:\Program Files (x86)\Windows Kits\8.1\bin\x86\MsiInfo.exe" "$(BuiltOuputPath)" /w 10
    

    请注意,您必须更改MsiInfo的路径,以匹配它在系统中的路径。

    对于Visual Studio v2017和Visual Studio​安装程序项目v0.9.1:
    此解决方案需要一个命令行工具,该工具作为

  • 在Visual Studio中:在解决方案资源管理器中选择Visual Studio安装程序项目。
    按F4键查看项目属性
    将InstallAllUsers设置为false

  • 右键单击解决方案资源管理器>视图>文件系统中的项目
    选择应用程序文件夹。(右键单击>属性窗口)
    将[ProgramFilesFolder]更改为[LocalAppDataFolder]

  • 构建MSI
    (在“解决方案资源管理器”>“生成”中的项目上单击鼠标右键)

  • 打开命令提示符或添加后期生成事件以运行Windows SDK实用程序msinfo.exe-示例:
    “C:\Program Files(x86)\Windows Kits\10\bin\10.0.17763.0\x86\msinfo.exe”“C:\yourprogram\installer.msi”-w 10


  • 注意:msinfo.exe
    -w 10
    开关将MSI文件的MSI“字数摘要”属性设置为“压缩-安装此软件包不需要提升权限”。更多信息

    我不确定是否可以将该解决方案应用到我的场景中。当我构建Visual Studio安装项目时,它会创建一个Setup.exe和一个MSI文件。另外,VisualStudio2008似乎没有给我足够的控制权来控制这些文件是如何创建的。setup.exe的目的似乎只是安装可能需要安装的任何先决条件。但是,是MSI文件执行实际指令