在WiX中为刚创建的应用程序池标识添加SQL权限

时间:2011-03-04 22:49:00

标签: sql iis wix

我有一个WiX软件包,其中有一个组件创建了一个具有ApplicationPoolIdentity标识(IIS AppPool \ AppPoolName)的IIS 7应用程序池。然后我有另一个组件在SQL Server数据库中为此标识添加权限(我使用的是SqlString扩展名)。

当SQL运行以添加权限时,我收到以下错误:

  

Windows NT用户或组'IIS   找不到AppPool \ AppPoolName。

我认为这种情况正在发生,因为IIS事件发生在事务中,而应用程序池实际上还没有真正提交。

有没有人有更好的方法解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:2)

据我了解WiX IIS扩展的工作方式,它会在应用任何更改之前创建元数据库备份。然后,在延迟序列中,它执行您指示它执行的所有操作。如果发生错误,则回滚操作只会从备份恢复以前的状态。否则,如果一切正常,则提交操作只会删除备份快照。

所以,考虑到这一点,我不认为你的猜测是正确的。应该可以做你想做的事。我怀疑问题在于行动排序。确保IIS操作先行,然后SQL内容,权限最后。以这种方式首先创建一个AppPool,然后做SQL的东西,最后应用所需的权限。好吧,我可能错了,但你应该通过尝试错误的方法找到正确的序列。

经验法则:始终生成详细日志。它包含一切。说真的,这是我最喜欢的Windows Installer:无论发生了什么,你都会在详细的日志中找到它。祝你好运!

答案 1 :(得分:1)

为什么不创建为您配置IIS的自定义操作? 您可以使用仅执行一组appcmd命令的简单自定义操作 创建一个托管(C#)自定义操作,以编程方式使用Microsoft.Web.Administration.ServerManager配置IIS7。