非管理员用户的MSI

时间:2017-09-28 21:39:38

标签: c# installation windows-installer installer visual-studio-setup-proje

我使用NetOffice在VS2015中创建了一个Outlook加载项并以.NET 2.0为目标,现在我需要将其打包以供非管理员用户安装(它不需要管理员权限)。我通常使用ClickOnce但它缺少(假设我没有使用VSTO?),所以我下载并安装了Visual Studio 2015安装程序项目(看起来很容易使用)。

This SO question/answer似乎是我正在搜索的解决方案,但是当我运行MSI文件时,它仍然需要管理员密码。输入管理员密码后,所有文件都会添加到用户的AppData文件夹中。那为什么还需要管理员密码?我在这里失踪了什么?

SO问题中概述的9个步骤:

  1. 使用InstallUISequence中的Type 51自定义操作始终取消设置ALLUSERS(每用户选项)
  2. 文件只能写入标准用户有权访问的文件夹。假设ALLUSERS始终设置为按用户设置,您可以使用可重定向文件夹属性,但不能使用ProgramFilesFolder,因为它不会针对每个用户重定向。
  3. 将应用安装到LocalAppDataFolder下的某个位置。
  4. 所有注册表设置都应写入HKCU,注册表的根列中为1。
  5. 翻转摘要信息流中字数属性的第3位,表示不需要凭据提示。
  6. 如果您有一个引导程序(通常名为setup.exe),请显示requestedExecutionLevel以作为Invoker运行。
  7. 通过ICE验证,因为ICE已检查每个用户和每个机器状态的混合不正确。
  8. 从标准用户帐户和提升的命令提示符进行测试以确认行为。
  9. 提供用户对软件包特定用户性质的文档,因为这在今天的应用程序安装中是非常典型的。
  10. 以下是我所做的事情:

    第1步:设置项目 - >视图 - >用户界面 - >将“InstallAllUsersVisible”设置为False(根据SO回答)

    步骤2:在设置文件系统中,我添加了“User's Application Data Folder”,然后是“Local”,然后是“ProjectName”,然后添加了Project Output - >主要产出。我试图删除“应用程序文件夹”,但它说它是必需的,不会被删除。

    第3步:我相信这就是我上面所做的......

    第4步:我没有添加任何注册表项。这是必需的吗?

    步骤5:根据SO答案,我下载了Orca并打开了MSI文件。但是,当我去View - >摘要信息并查找单词计数属性它不存在。我查看了所有表格,无法在任何地方找到它。

    步骤6:在安装文件属性中取消选中“创建安装程序以安装必备组件”后,我不再拥有setup.exe文件。

    第7步:我在ICE验证中看到了几个问题,但我不确定我需要做什么。

    暂时跳过第8步和第9步。

    其他:在Orca环顾四周时,我在CustomAction表中注意到DIRCA_TARGETDIR仍设置为程序文件夹,因此我将其更改为[AppDataFolder] [制造商] [ProductName]。

1 个答案:

答案 0 :(得分:0)

基本上,您应该确定VSTO注册所需的注册表项,并使用Visual Studio功能并忽略大多数旨在与WiX等工具一起使用的SO信息。

对于每用户安装,您的InstallAllUsers false是正确的。

要使用LocalAppDataFolder,请转到“文件系统”视图,右键单击该节点并添加一个特殊文件夹,即自定义文件夹。在文件夹的属性窗口中,将[LocalAppDataFolder]放在DefaultLocation中。然后,您可以在其中添加文件。这就是它 - 不要乱用DIRCA_自定义动作。

如果取消选中“先决条件”按钮,您将获得一个MSI文件,以及您安装的内容。如果您有先决条件,则需要一个setup.exe引导程序,它将安装,然后安装MSI。

在Orca中使用“查看摘要信息”关闭UAC提示,并检查“UAC兼容”框。请注意,Windows Installer并不违反系统安全规则,因为它是一个安装,因此如果安装程序尝试执行某些不允许限制用户的操作,则它将失败。