VS 프로젝트가 아닌 명령 줄에서 Wix 3.6 베타를 사용하고 있습니다. 난 열로 수확되는 웹 응용 프로그램을 디렉토리로 가지고있다. 이 작동합니다. 각 대상 환경 web.config 파일을 관리하기 위해 web.config 변형을 사용하고 있습니다. 이것들은 msbuild로 출력됩니다.이 기능은 Visual Studio 및 소스 컨트롤에서 작업을 계속 볼 수있게합니다.Wix 사용 ASP.net 웹 응용 프로그램을 설치하는 동안 여러 web.config 파일 중 하나를 배포하는 방법
나는 수동으로 product.wxs에 조건을 포함하는 구성 요소를 포함시키는 여러 web.config 파일 중 하나를 배포하는 데 문제가 발생했습니다. 모든 구성 요소를 배포 가능한 기능으로 포함하고 조건을 활성으로 선택하도록했습니다. 예를 들면 :
<DirectoryRef Id="wwwroot">
<Component Id="setup_a" Guid="some_guid" >
<File Source="$(var.ConfigSourceDir)\setup_a\web.config" />
<Condition>ENVIRON = setup_a</Condition>
</Component>
<Component Id="setup_b" Guid="some_guid" >
<File Source="$(var.ConfigSourceDir)\setup_b\web.config" />
<Condition>ENVIRON = setup_b</Condition>
</Component>
이동하거나 문제를 삭제, 모든 파일 이름 바꾸기를 만들 수 있지만 여러 Web.config의 파일이 동일한 대상에 매핑하는 매우 근본적인 문제가이 날의 빛 오류를 제공하지 않은이 (파일, 구성 요소, 기능)의 ID가 모두 중복되어 있는지 확인하십시오. ID : "Product.wxs (xxx) : 오류 LGHT0091 : 중복 된 심볼 'File : web.config' 독특합니다. "
다른 방법은 Web.config의 수 하나를 이동/다른의 .config라는 이름의 파일을 사용하고 이름을 변경, 그래서 뭔가 같은 : 이것은 CopyFile 수 BOT, 오류가 발생하지 않습니다
<DirectoryRef Id="wwwroot">
<Component Id="setup_a" Guid="some_guid" >
<File Id="setup_a.config" Source="$(var.ConfigSourceDir)\setup_a.config" />
<CopyFile Id="moveit" SourceDirectory="wwwroot" SourceName="setup_a.config" DestinationDirectory="wwwroot" DestinationName="web.config" />
</Component>
명령은 아무것도하지 않습니다. wwwroot 폴더에 setup_a.config가 생겼습니다.
<DirectoryRef Id="wwwroot">
<Component Id="setup_a" Guid="some_guid" >
<File Id="setup_a.config" Source="$(var.ConfigSourceDir)\setup_a.config" >
<CopyFile Id="moveit" DestinationName="web.config"/>
</File>
</Component>
을 ...하지만 중첩 된 CopyFile 수는 I가 (이 허용되지 않는 것) 삭제 = "예"속성을 추가 할 수 없음을 의미 :
내가 둥지는 CopyFile 수는 파일 안에 복사 작업은 다음 작동하는 경우 '이동'동작을 만듭니다. 대신 wwwroot 폴더에 setup_a.config와 web.config가 둘 다 있습니다. 나도 같은 구성 요소 내에 별도의 removefile를 추가하는 경우 또는, 그것은 또한 않습니다 아무것도 : 그래서
<RemoveFile Id="removefile" On="install" Directory="wwwroot" Name="setup_a.config"/>
</Component>
, 나는 작업 예를 조건부 배포에서 여러 Web.config의 파일을 처리하는 방법의에 대한 바라고 있어요 파일을 남기지 않습니다. web.config의 대상 파일 이름은 프레임 워크에 의해 고정되며 변경할 수 없습니다. 다른 설정은 설정 변환을 사용하여 wix 외부에서 미리 생성됩니다.이 설정은 변경할 수 없지만 생성 된 파일 이름은 아무 것도 될 수 없습니다.
환호!
아아 이름 속성이 없어서 파일 요소가 엉망이되어서 이것이 작동하지 않는다고 생각하게되었습니다. 당신의 본보기가 작동했습니다, Yan에게 감사드립니다. –
조금 깔끔하게 정리합니다 (ICE 유효성 경고 경고는 피하십시오). 구성 요소/파일을 web.config-a 및 web.config로 작성한 다음 CopyFile 요소를 사용하여 web.config에 복제합니다. ICE 좋고 깨끗합니다. 단점은 상자에 여분의 파일입니다. 위의 파일은 누군가 내가 web.config를 조작하고 비교/되돌리기를 원한다면 어떤 선택을했는지에 대한 시각적 단서와 처녀 파일의 복사본을 제공합니다. –