【问题标题】:Can I allow a user to choose either applicationPoolIdentity or specify a user using WiX-IIS extension?我可以允许用户选择 applicationPoolIdentity 或指定使用 WiX-IIS 扩展的用户吗?
【发布时间】:2014-04-15 15:58:50
【问题描述】:

我的 Web 应用程序通常会被安装以使用 applicationPoolIdentity:

<iis:WebAppPool Id="MyAppPool" Identity="applicationPoolIdentity" Name="MyAppPool"/>

但我有一类用户想要使用特定的域用户,我通常会这样创作:

<util:User Id="MyUser" Name="[MY_USER]" Domain="[MY_DOMAIN]" Password="[MY_PASSWORD]" CreateUser="no"/>
<iis:WebAppPool Id="MyAppPool" Identity="other" User="MyUser" Name="MyAppPool" />

为此制作用户界面很简单,但有没有办法在Identity="applicationPoolIdentity"Identity="other" 之间有条件地切换而无需编写自定义操作?

【问题讨论】:

    标签: wix wix-iisextension


    【解决方案1】:

    是的,这是可能的,但您需要创建一个包含两个具有条件的组件的组件组。由于这个解决方案有点冗长,我建议将它放在一个单独的文件中。

    这是一个示例,基于https://www.codeproject.com/Articles/115036/Creating-WIX-Installer-for-ASP-NET-Web-Application

    <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
         xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"
         xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
        <Fragment>
            <Property Id="IIS_WEBSITE" Value="root"/>
            <Property Id="VIRTUAL_DIR_VAL" Value="myappdir" />
    
            <!-- +++++++++++++++++++ web app name properties initialize ++++++++++++++++++++ -->
            <Property Id="WEB_APP_NAME" Value="myapp" />
            <Property Id="WEB_APP_USE_CUSTOM_APP_POOL_IDENTITY" Value="1" />
    
            <!-- +++++++++++++++++++ app pool identity properties initialize +++++++++++++++ -->
            <Property Id="WEB_APP_POOL_IDENTITY_DOMAIN" Value="domain" />
            <Property Id="WEB_APP_POOL_IDENTITY_NAME" Value="user" />
            <Property Id="WEB_APP_POOL_IDENTITY_PWD" Hidden="yes" />
    
            <!-- Reference to IIS Website to install to, but not create -->
            <iis:WebSite Id='rootwebsite'
                     Description='[IIS_WEBSITE]'
                     Directory='INSTALLFOLDER'>
              <!-- This element has to be here or WiX does not compile. It’s ignored 
                   in this case. -->
              <iis:WebAddress Id="AllUnassignedHTTP" Port="80" />
              <iis:WebAddress Id="AllUnassignedHTTPS" Port="443" />
            </iis:WebSite>
    
            <DirectoryRef Id="INSTALLFOLDER">
    
              <Component Id="InstallWebsiteCustomUser" Guid="[guid]" KeyPath="yes" Win64="yes">
                <Condition><![CDATA[WEB_APP_USE_CUSTOM_APP_POOL_IDENTITY = 1]]></Condition>
                <util:User Id="WebAppPoolUser"
                           CreateUser="no"
                           Name="[WEB_APP_POOL_IDENTITY_NAME]"
                           Password="[WEB_APP_POOL_IDENTITY_PWD]"
                           Domain="[WEB_APP_POOL_IDENTITY_DOMAIN]" />
                <iis:WebAppPool Id="WebAppPoolCustom"
                                Name="[WEB_APP_NAME]"
                                Identity="other"
                                User="WebAppPoolUser"
                                ManagedPipelineMode="Integrated"
                                ManagedRuntimeVersion="v4.0"
                                RecycleMinutes="200" />
                <iis:WebVirtualDir Id="WebVirtualDirCustom"
                                   Alias="[VIRTUAL_DIR_VAL]"
                                   Directory="INSTALLFOLDER"
                                   WebSite="rootwebsite">
                  <!-- Turn the Virtual Directory into a web application. -->
                  <iis:WebApplication Id="WebApplicationCustom"
                                      Name="[WEB_APP_NAME]"
                                      WebAppPool="WebAppPoolCustom" />
                </iis:WebVirtualDir>
              </Component>
    
              <Component Id="InstallWebsite" Guid="[guid]" KeyPath="yes" Win64="yes">
                <Condition><![CDATA[WEB_APP_USE_CUSTOM_APP_POOL_IDENTITY <> 1]]></Condition>
                <iis:WebAppPool Id="WebAppPool"
                                Name="[WEB_APP_NAME]"
                                Identity="applicationPoolIdentity"
                                ManagedPipelineMode="Integrated"
                                ManagedRuntimeVersion="v4.0"
                                RecycleMinutes="200"/>
                <iis:WebVirtualDir Id="WebVirtualDir"
                                   Alias="[VIRTUAL_DIR_VAL]"
                                   Directory="INSTALLFOLDER"
                                   WebSite="rootwebsite">
                  <!-- Turn the Virtual Directory into a web application. -->
                  <iis:WebApplication Id="WebApplication"
                                      Name="[WEB_APP_NAME]"
                                      WebAppPool="WebAppPool" />
                </iis:WebVirtualDir>
              </Component>
            </DirectoryRef>
    
            <ComponentGroup Id="IisConfiguration">
              <ComponentRef Id="InstallWebsiteCustomUser" />
              <ComponentRef Id="InstallWebsite" />
            </ComponentGroup>
        </Fragment>
    </Wix>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多