在WiX中为新创建的应用程序池身份添加SQL权限

7
我有一个WiX包,其中一个组件创建了一个具有ApplicationPoolIdentity标识(IIS AppPool\AppPoolName)的IIS 7应用程序池。然后我有另一个组件,用于为此标识在SQL Server数据库中添加权限(我使用SqlString扩展)。
当运行SQL以添加权限时,我收到以下错误:
Windows NT用户或组“ IIS AppPool\AppPoolName”未找到。
我认为这是因为IIS正在事务中发生,并且应用程序池尚未完全提交。
是否有更好的方法解决这个问题?
谢谢!
2个回答

2
据我了解,WiX IIS扩展的工作方式是,在应用任何更改之前创建一个元数据备份。然后,在延迟序列中,执行您指示它执行的所有操作。如果发生错误,则回滚操作会从备份中恢复先前的状态。否则,如果一切正常,提交操作将删除备份快照。因此,考虑到这一点,我不认为你的猜测是正确的。你想要的应该是可行的。我怀疑问题在于操作顺序。确保IIS操作首先进行,然后是SQL操作,最后是权限。这样做的第一件事是创建一个AppPool,然后进行SQL操作,最后应用所需的权限。好吧,我可能错了,但你可以通过尝试和错误的方法找到正确的顺序。还有一个经验法则:始终生成详细日志。它包含了一切。说真的,这是我喜欢Windows Installer的最好的事情:无论发生什么,你都可以在详细日志中找到它。祝你好运!

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

我不同意。你应该尽可能依赖标准操作,只有在最后情况下才使用自定义代码。 - Yan Sklyarenko
如果你想配置IIS7,几乎总是需要使用自定义操作。WiX iis扩展只允许你做一些基本的事情,比如创建池、站点、应用等。如果你想改变这些对象的某些属性,通常就会遇到困难。 - Elmar de Koning

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接