我正在使用帮助自定义操作为我的Web应用程序尝试更改应用程序池
<InstallExecuteSequence>
<Custom Action="ConfigureAppPools" Before="InstallFinalize">Application pool configured</Custom>
</InstallExecuteSequence>
<!-- Snip -->
<CustomAction Id="ConfigureAppPools" Execute="deferred" Impersonate="no" Return="check" Directory="TARGETDIR" ExeCommand="[SystemFolder]inetsrv\appcmd set site /site.name:"Default Web Site"/[path='/MyWeb'].applicationPool:MyWeb"/>
但得到以下错误 LGHT0204:ICE03:格式字符串无效;表:CustomAction,Column:Target,Key(s):ConfigureAppPools
如何修复?
答案 0 :(得分:4)
您应该转义ExeCommand属性中的方括号(path=...
周围的方括号),否则MSI会认为它是必须格式化的属性。试试这个:
<CustomAction Id="ConfigureAppPools" Execute="deferred" Impersonate="no" Return="check" Directory="TARGETDIR" ExeCommand="[SystemFolder]inetsrv\appcmd set site /site.name:"Default Web Site" /[\[]path='/MyWeb'[\]].applicationPool:MyWeb"/>
您要逃离的每个方括号必须以反斜杠为前缀,并将包装物放入另一对方括号中。
答案 1 :(得分:0)
文本Application pool configured
不是有效条件。
请参阅Conditional Statement Syntax或一些示例here。