【问题标题】:MSI for non-admin users非管理员用户的 MSI
【发布时间】:2017-09-28 21:39:38
【问题描述】:

我在 VS2015 中使用 NetOffice 并针对 .NET 2.0 制作了一个 Outlook 插件,现在我需要将它打包以供非管理员用户安装(它不需要管理员权限)。我通常使用 ClickOnce,但它不见了(假设是因为我没有使用 VSTO?),所以我下载并安装了 Visual Studio 2015 安装程序项目(似乎很容易使用)。

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

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

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

这是我所做的:

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

第 2 步:在设置文件系统中,我添加了“用户的应用程序数据文件夹”,然后是“本地”,然后是“项目名称”,然后添加了项目输出 -> 主输出。我试图删除“应用程序文件夹”,但它说它是必需的,不会被删除。

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

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

第 5 步:根据 SO 答案,我下载了 Orca 并打开了 MSI 文件。但是,当我转到查看 - > 摘要信息并查找字数属性时,它不存在。我浏览了所有表格,但在任何地方都找不到。

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

第 7 步:我阅读了一些关于 ICE 验证的简介,但不确定我需要在这里做什么。

现在跳过第 8 步和第 9 步。

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

【问题讨论】:

  • 多年来,我撰写了许多 Office 插件安装程序/博客文章。 IMO 使用 MSI 的全部意义在于,您可以拥有一个引导程序来安装所有先决条件并在每台机器上安装 MSI。如果您的要求是每个用户/从不需要提升权限,为什么不直接使用 ClickOnce?我自己可能并不关心它,但这就是它的设计目的。
  • 我一直使用 ClickOnce,但对于这个插件,我不能使用 VSTO(未安装在用户计算机上)。所以我使用 NetOffice 并使用他们的“开发者工具箱”创建了我的项目。当我在 VS2015 中打开它并转到项目属性时,缺少“发布”选项卡,并且“签名”选项卡下的 ClickOnce 显示为灰色。如果我能立即弄清楚如何使用 ClickOnce,我会的。
  • 嗯.. 我从来没有使用过那个 SDK。也许有一个导入目标可以添加到他们生成的 MSBuild 项目文件中,可以启用它。另一种选择是查看github.com/Squirrel/Squirrel.Windows .. 不要误会我的意思,我喜欢 MSI,我喜欢按机器安装,但如果你的故事真的是按用户的,我认为还有其他选择你可能会更喜欢。

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


【解决方案1】:

基本上,您应该弄清楚 VSTO 注册需要哪些注册表项,并且只使用 Visual Studio 功能,而忽略大部分旨在与 WiX 等工具一起使用的 SO 信息。

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

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

如果您取消选中先决条件按钮,您将只获得一个 MSI 文件,这就是您安装的文件。如果您有先决条件,则需要 setup.exe 引导程序,它将安装它,然后安装您的 MSI。

Orca 中的 UAC 提示已关闭,并带有查看摘要信息并选中 UAC Compliant 框。请注意,Windows Installer 不会仅仅因为它是安装而违反系统安全规则,因此如果安装程序尝试执行不允许受限用户执行的操作,它将失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    相关资源
    最近更新 更多