WiX:安装程序总是更改应用程序池以启用32位应用程序。

8

WiX安装程序安装Silverlight Web应用程序。它可以在32位或64位应用程序池下工作。但是,当安装完成后,我发现选择的应用程序池总是设置为启用32位应用程序。即使对于64位池也是如此。这是不合适的,因为它可能会更改先前安装的64位应用程序的现有池。

我没有明确更改此参数。问题的原因是什么?

添加的代码示例:

<Component Id="WebAppVDirComponent"
    Guid="C7A4B0E8-2389-4A2A-B285-96960BEE1C52" KeyPath="yes">
    <Condition><![CDATA[RBGROUP_HOSTING = "iis"]]></Condition>
        <iis:WebVirtualDir Id="VDir"
                Alias="[WEB_APP_NAME]"
                Directory="INSTALLDIR"
                WebSite="TheWebSite" >
        <iis:MimeMap Id="SilverlightMimeType" Extension=".xap" Type="application/x-silverlight-app" />
        <iis:WebApplication Id="WorkWebApplication"
                Name="[WEB_APP_NAME]" WebAppPool="TheAppPool"/>
        </iis:WebVirtualDir>
        <iis:WebAppPool Id="TheAppPool" Name="[APP_POOL_NAME]" ></iis:WebAppPool>           
        <CreateFolder/>
</Component>
1个回答

19

在我看来,这是以非常优雅的方式设计的。

如果您将<iis:WebAppPool>元素声明放置在标记为Win64="yes"<Component>中,则应用程序池将被创建,并且Enable32bit标志将设置为false。否则(即默认情况下),它将被创建,并且Enable32bit标志将设置为true

我不确定当您不使用安装程序创建应用程序池,而是引用现有的应用程序池时,它会如何运行。我希望它根本不会改变此标志。您可以进行试验,找出其确切运行方式。

另外需要注意的是:我建议避免安装到现有的应用程序池或网站中。这更难以维护-请记住,在卸载后,您必须将计算机恢复到“预安装”状态。这意味着您必须备份/还原所有使用自定义操作更改的状态...可怕...


谢谢,Yan。嗯...是的,很有趣...我已经添加了我使用的代码。 - ZedZip
所以,您添加的代码将创建一个启用32位的应用程序池。您可能需要添加另一个组件,其条件相反,即使用VersionNT64和Win64属性设置为是,并将所有相同的内容添加到其中。 - Yan Sklyarenko
是的,当我创建一个新的池时没有问题。但问题是当用户选择现有的64位池并将其更改为32位时。我使用自定义的.NET函数来选择池。 - ZedZip
1
当要求您将目录更改为64位目录以便将组件绑定到目录以使其正常工作时,您如何处理错误? - Shawn Mclean
我认为你提到的这个错误是在存在模拟32位目录时发生的,对吧?说实话,我个人没有见过它,但我怀疑如果该目录位于wwwroot下,则不会出现错误... - Yan Sklyarenko
1
对于未来的读者:我能够通过(这个提示)Win64 =“yes”在包装iis:WebAppPool xml的组件(xml-tag)中使其工作....但是.....我还必须在Package(xml-tag)中添加Platform =“x64”我将在下面放置xml。不确定它是否会发布为评论。 - granadaCoder

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