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

为WiX中刚创建的应用程序池标识添加SQL权限,sql,iis,wix,Sql,Iis,Wix,我有一个WiX包,其中一个组件创建了一个IIS 7应用程序池,该应用程序池具有ApplicationPoolIdentity标识(IIS AppPool\AppPoolName)。然后,我有另一个组件在SQLServer数据库中添加对此标识的权限(我使用的是SqlString扩展名) 当SQL运行以添加权限时,出现以下错误: Windows NT用户或组的IIS 找不到AppPool\AppPoolName 我假设这是因为IIS的东西发生在事务中,而应用程序池实际上还没有提交 有谁有更好的方法来

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

当SQL运行以添加权限时,出现以下错误:

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

我假设这是因为IIS的东西发生在事务中,而应用程序池实际上还没有提交

有谁有更好的方法来解决这个问题吗


谢谢

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

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

所以,考虑到这一点,我认为你的猜测不正确。应该可以做你想做的事。我怀疑问题出在行动上。确保首先执行IIS操作,然后执行SQL操作,最后执行权限。通过这种方式,您首先要创建一个AppPool,然后执行SQL操作,最后应用所需的权限。嗯,我可能错了,但你应该通过尝试和错误的方法找到正确的顺序


经验法则是:总是生成详细的日志。它包含一切。说真的,这是我最喜欢Windows Installer的地方:不管发生了什么,你都可以在详细的日志中找到它。祝你好运

嗯,我不同意。您应该尽可能依赖标准操作,并将自定义代码作为最后手段。如果您想要配置IIS7,您几乎总是必须解析为自定义操作。WiX-iis扩展只允许您执行非常基本的操作,如创建池、站点、应用程序等。如果您想更改这些对象的某些属性,通常会遇到运气不佳的情况。