3

使用 InstallShield 2012 Professional 安装 ASP.NET 网站,以及在网络服务帐户的安全上下文中运行的自定义应用程序池。当我测试网站时,我遇到了权限问题(文件权限),网站失败并显示消息“错误:访问被拒绝。”。

使用 InstallShield,我为每个文件设置了对用户“Authenticated Users”的读取权限。我通过导航到“应用程序数据”->“文件和文件夹”在 InstallShield ISM 文件中设置权限

  • 选择“目标计算机的文件夹”中的每个文件夹
  • 右键单击“目标计算机的文件夹”中的每个文件夹
  • 选择上下文菜单“属性”
  • 点击按钮“权限”
  • 在用户“Authenticated Users”的“Name(s):”部分添加条目,域为空白(选择“Read & Execute”、“List Folder Contents”、“Read”)

...然后对每个文件夹,然后对每个文件一遍又一遍地执行此操作。

一旦我测试,我发现我有问题。如果我导航到服务器上安装的实际文件并查看,它们看起来是正确的,但不能正常运行。事实上,我 - 作为经过身份验证的用户 - 没有导航文件夹结构的权限,但因为我是管理员,所以我可以调整权限并进入。如果我手动重置每个文件(和相关文件夹)的这些权限网站正常运行。这意味着应用程序池设置、文件复制和网络服务帐户都正常运行,并且问题与 IIS 试图访问的文件的权限严格相关。

有没有人遇到过这个问题,并克服了它?如果是这样,怎么做?(我宁愿避免使用 InstallScript 来设置权限。)

4

1 回答 1

9

备注:

在考虑“常规信息”区域中的设置时,特别是“锁定权限”属性 - InstallShield 中文件级别权限设置的行为会有所不同。选择“传统 Windows 安装程序处理”时,我从未成功添加显式权限。我注意到这样做时,文件夹上的所有继承权限都会消失。此外,虽然权限似乎是在 Windows 中设置的,但它们的行为就像没有设置一样。手动操作测试会显示它们没有正确设置。

将“锁定权限”属性设置为“自定义 InstallShield 处理”时,我能够添加权限并且所有继承的权限保持不变。有了这个,我能够将所需的权限应用于“应用程序数据”->“文件和文件夹”区域中的根安装目录,并且因为我选择了“自定义 InstallShield 处理”,所以我能够选中“应用”复选框这些对子对象的权限”在文件夹属性的权限区域的高级区域中。

完成和解决我的问题的步骤:

在 InstallShield(ISM 文件)中...

  • 导航到“常规信息”(左侧窗格)
  • 将锁定权限设置为“自定义 InstallShield 处理”
  • 导航到“应用程序数据”
  • 右键单击要安装程序的根文件夹
  • 点击“属性”
  • 点击按钮“权限”
  • 在标有“名称”的白框区域中右键单击屏幕的上半部分
  • 选择上下文菜单项“新建”
  • 删除域用户,将此字段留空
  • 添加了用户“经过身份验证的用户”
  • 选中下部区域的复选框(“读取并执行”、“列出文件夹内容”、“读取”)
  • 点击“高级”按钮
  • 选中复选框“将这些权限应用于子对象”
  • 单击“确定”按钮
  • 单击“确定”按钮
  • 单击“确定”按钮

重新编译安装程序并安装。现在工作。

于 2012-11-19T20:32:25.147 回答