1

Web アプリケーションを IIS7 にインストールするための WiX v3.5 インストーラーを作成しました。ユーザーが必要な Web サイトとアプリ プールを選択し、ダイアログを介して仮想ディレクトリに名前を付けることができるようにするカスタム アクションがあります。

しかし、今私は認証に来て、困惑しています。偽装を有効にして、ユーザーが偽装ログインとパスワードを入力できるようにしようとしています。私の Visual Studion 2010 セットアップ プロジェクトではこれがうまく機能していたので、今度は同じものを WiX で複製する必要があります。

明らかに、これは次の質問に従って appcmd を介して行うことができます: IISExtension で WiX 3.x を使用して "ASP.NET Impersonation" を設定することは可能ですか? しかし、私はこれを機能させることができないようです。これを product.wxs に追加して、カスタム アクションでラップすることはできますか? アイデアはありますか?何か助けていただければ幸いです。

appcmd set config /commit:WEBROOT/section:identity /impersonate:true
4

1 に答える 1

2

Hi I managed to get this working myself , so if anyone else is having the same issue , i fixed this by modifying my web.config during my install:

To do this i added the following code to my product.wsx to edit my web.config , using properties which i assigned to text boxes in a new dialog to allow the user to enter the impersonation username and password on install :

<Component Id="Web.config" Guid="2ED81B77-F153-4003-9006-4770D789D4B6">
        <File Id="Web.config" Name="Web.config" Source="$(var.SolutionDir)MyWebApp\Web.config" DiskId="1" KeyPath="yes" />
        <util:XmlFile Id="system.webidentity" File="[INSTALLLOCATION]Web.config" Action="createElement" ElementPath="/configuration/system.web" Name="identity" Sequence="1" />
        <util:XmlFile Id="system.webIdentityAttribute" Action="setValue" File="[INSTALLLOCATION]Web.config" ElementPath="/configuration/system.web/identity" Name="impersonate" Value="true" Sequence="2" />
        <util:XmlFile Id="system.webIdentityAttribute2" Action="setValue" File="[INSTALLLOCATION]Web.config" ElementPath="/configuration/system.web/identity" Name="password" Value="[IMPERSONATIONUSERPASSWORD]" Sequence="3" />
        <util:XmlFile Id="system.webIdentityAttribute3" Action="setValue" File="[INSTALLLOCATION]Web.config" ElementPath="/configuration/system.web/identity" Name="userName" Value="[IMPERSONATIONUSER]" Sequence="4" />

Note if you are adding your files automatically to your Wix project using msbuild and heat , you'll have to ensure you arent copying your web.config here , or if you are , remove my web.config your Target settings. Otherwise you'll get duplication errors .

<Target Name="BeforeBuild">
<MSBuild Projects="%(ProjectReference.FullPath)" Targets="Package" Properties="Configuration=$(Configuration);Platform=AnyCPU" Condition="'%(ProjectReference.PackageThisProject)'=='True'" />
<Delete Files="%(ProjectReference.RootDir)%(ProjectReference.Directory)obj\$(Configuration)\Package\PackageTmp\web.config">
</Delete>
<PropertyGroup>
  <LinkerBaseInputPaths>%(ProjectReference.RootDir)%(ProjectReference.Directory)obj\$(Configuration)\Package\PackageTmp\</LinkerBaseInputPaths>
</PropertyGroup>
<HeatDirectory OutputFile="%(ProjectReference.Filename).wxs" Directory="%(ProjectReference.RootDir)%(ProjectReference.Directory)obj\$(Configuration)\Package\PackageTmp\" DirectoryRefId="INSTALLLOCATION" ComponentGroupName="%(ProjectReference.Filename)_Project" SuppressCom="true" SuppressFragments="true" SuppressRegistry="true" SuppressRootDirectory="true" AutoGenerateGuids="false" GenerateGuidsNow="true" ToolPath="$(WixToolPath)" Condition="'%(ProjectReference.PackageThisProject)'=='True'" />   </Target>
于 2013-04-23T13:41:36.423 に答える