【问题标题】:Install files to original user's My Docs folder via Inno Setup on Windows Vista/7在 Windows Vista/7 上通过 Inno Setup 将文件安装到原始用户的 My Docs 文件夹
【发布时间】:2011-05-23 04:08:26
【问题描述】:

在 Inno Setup 脚本的 [Run] 部分,有一个标志 runasoriginaluser 允许脚本以原始用户身份运行进程:

生成的进程将执行 (通常不升高) 启动用户的凭据 初始设置(即“pre-UAC 对话框”凭据)。

{userdocs} shell 文件夹常量是否有等效标志或解决方法?

这显然是 Inno Setup(通常是其他安装程序)中的一个已知限制,但我希望有人知道解决方法。

摘自 Inno Setup 帮助文件:

“用户”常量指的是 运行安装程序的用户的配置文件。 此用户通常与 当前登录的用户,所以使用 谨慎使用“用户”常量。

【问题讨论】:

  • 您要在“我的文档”文件夹中安装哪些文件?我问是因为这不是通常用于安装文件的位置。
  • 在许多方面,这是一个非传统的安装。它是一个税收征收系统,有 50 名左右的用户使用。我们每年多次发送程序更新(不需要向“我的文档”文件夹写入任何内容)。但是,我们需要每年两次发送更新的数据文件。有时我们会遇到需要安装完整程序(而不是更新)的新税务员。过去,我们有三种不同的流程来处理这些场景(数据文件更新、程序更新和程序安装)。我们正在尝试使用单个 Inno Setup“安装”来完成所有三个操作。

标签: windows-7 windows-vista uac inno-setup


【解决方案1】:

我想出的解决方法是使用外部脚本来执行数据复制,并使用wpReady 事件函数的wpReady 页面中的ExecAsOriginalUser 函数调用脚本。

如果有人感兴趣,我会提供更多详细信息。

【讨论】:

【解决方案2】:

你的方法不正确。

有两种正确的方法:

  1. 如果安装程序仅为当前(非特权)用户安装应用程序,则不需要管理员权限,将PrivilegesRequired 设置为lowest

    [Setup]
    PrivilegesRequired=lowest
    

    那么“用户”常量将正确引用当前用户的文件夹。

  2. 如果安装程序为所有用户安装应用程序,则将某些文件放入特定用户的文件夹是没有意义的。所有用户都需要这些文件,而不仅仅是一个。在这种情况下,推荐的方法是使用{commonappdata} constant(或类似名称)将文件安装到“Common”文件夹。并让应用程序在第一次运行时将文件复制到用户文件夹。

    另见How to write to the user's My Documents directory with installer when the user used 'Run As Administrator'

您还可以允许用户在这两种方法之间进行选择。
Make Inno Setup installer request privileges elevation only when needed

有关其他类似问题,请参阅


话虽如此,您可以通过使用ExecAsOriginalUser function(或@987654343 中的runasoriginaluser flag)执行外部复制实用程序(copyxcopyrobocopy) @ 部分)。

ExecAsOriginalUser(
  'cmd.exe', '/c xcopy.exe "sourcefile" "%APPDATA%"',
  '', SW_HIDE, ewWaitUntilTerminated, ResultCode);

有关此方法的更多详细信息,请参阅类似问题 Inno Setup Creating registry key for logged in user (not admin user)

不过,如果安装程序是立即开始提升的(与提升自身相反),上述方法将不起作用。无论如何,它在这种情况下都无法工作。见How to write to the user's My Documents directory with installer when the user used 'Run As Administrator'。因此,请坚持上述方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-17
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2016-04-01
    相关资源
    最近更新 更多