代码之家  ›  专栏  ›  技术社区  ›  Casey Margell

只有当所有用户

  •  0
  • Casey Margell  · 技术社区  · 15 年前

    我有一个自定义操作,用于部署切换包中msi旁边的一些文件。我的自定义操作通过originaldatabase参数传递msi路径,我正在检查它旁边是否有文件夹。没什么特别疯狂的,只是屁股疼得想不出来。

    从本地复制的文件安装单个或多个用户的工作方式与champ类似。从网络共享运行setup.exe时安装单个用户可以正常工作,但从网络共享安装所有用户时,会出现安全异常。

    问题是:

    DirectoryInfo[] subdirectories = workingDirectoryInfo.GetDirectories("Foo");
    

    自定义操作的运行方式 SecurityAction.Demand 所以我应该拥有我所需要的所有访问权限。

    非常感谢任何人提供的任何信息。

    谢谢, 凯西

    1 回复  |  直到 15 年前
        1
  •  0
  •   Christopher Painter    15 年前

    我相信,当您为每个用户安装时,服务器端不需要提升来执行事务,这样它就可以模拟交互式用户并访问文件。当您为所有用户安装时,它必须提升,所以现在它基本上是以系统的形式运行的,这将使用机器帐户来访问文件,然后会出现权限错误。

    我可以问一下为什么这些文件不在您的安装程序中吗?有没有什么方法可以包括它们,这样你就不必进行自定义操作?否则,您可能需要编写一个自定义操作,以检测原始数据库在网络共享上,并阻止安装,除非用户在运行之前将所有文件复制下来。