2013-07-12 1 views
1

우리는 WiX를 사용하여 ASP.NET 코드를 MSI 설치 프로그램에 번들로 제공하며 폴더에 수정 권한이 있도록 [ComputerName] \ IIS_WPG 그룹을 설정해야합니다. CO ")를 설치 디렉토리 아래에 두십시오. 디렉토리 구조는 이후 CO 폴더가 실제로 .NET 솔루션 파일의 일부입니다Wix : 폴더 권한을 설정하는 CustomAct

C:\inetpub\wwwroot\MyApp\CO 

설치 다음과 같습니다, 애플리케이션가 MSI에 번들 될 때 XML 파일이 아래에 있기 때문에, 공동 폴더가 자동으로 포함됩니다 그것은 "Content"로 표시됩니다 (즉, CreateFolder를 명시 적으로 사용하여 MyApp 아래에 CO 폴더를 만들 필요가 없음을 의미). 이러한 XML 파일은 응용 프로그램에서 업데이트되므로 IIS_WPG에 수정 권한이 필요한 이유가됩니다.

내 질문은 어떻게 CO 폴더에 대한 사용 권한을 설정합니까? 나는 기본적으로 포함 된 권한을 덮어 쓰려고 폴더를 만들 수 있다고 생각했지만 권한을 설정하지 않았다. 나는 만들고있는 폴더가 실제 폴더에 의해 덮어 쓰기 때문이라고 추측하고있다. MSI를 설정함으로써 내가 설정 한 권한을 덮어 씁니다.

InstallFinalize 전에 어느 시점에서 실행되는 CustomAction을 만들어야한다고 생각했지만 폴더 생성을 CustomAction에 연결하는 방법을 이해할 수 없어서 길을 잃었습니다. 나는이

<InstallExecuteSequence> 
    <Custom Action="SetPermission" Before="InstallFinalize" />  
</InstallExecuteSequence> 
<CustomAction Id="SetPermission" Directory="CODIRECTORY"> 
    <Directory Id="CODIRECTORY" Name="CO" LongName="CO"> 
     <Component Id="CODIR" Guid="D28C9DA4-D20F-45E6-9C9B-4687177EDF41" DiskId="1"> 
      <CreateFolder> 
       <Permission GenericAll="yes" User="[ComputerName]\IIS_WPG" /> 
       <Permission GenericAll="yes" User="Administrators" /> 
       <Permission GenericRead="yes" GenericWrite="yes" User="ASPNET" /> 
      </CreateFolder> 
     </Component> 
    </Directory>  
</CustomAction> 

시도했다 그러나 그것은 나에게

error CNDL0049 : The CustomAction element's DllEntry, Error, ExeCommand, JScriptCall, Script, Value, or VBScriptCall attribute was not found; one of these is required. 
error CNDL0005 : The CustomAction element contains an unexpected child element 'Directory' 

가 나는 또한 PermissionEx를 사용하려 한이 오류를 제공하지만, 심지어는

error CNDL0005 : The CreateFolder element contains an unexpected child element 'util:PermissionEx'. 

를 사용할 때이 오류가 파일의 맨 위에 xmlns : util = "http://schemas.microsoft.com/wix/UtilExtension"을 추가했지만.

CustomAction을 작동시키고 폴더 권한을 얻으려면 어떻게해야합니까?

답변

0

나는이 게시물

Set Permission Using cacls

나는 그것이 적합하지 알고에서 수행되는 것과 유사한에서 CustomAction을 만들 수 있었다, 그러나 해결 :

이 사람은 우리를 위해 작동 문제. 우리는 잠재적으로 Wix 3으로 업그레이드하고 PermissionEx를 사용할 수 있습니다. 그러나 그것은 다른 날을 위해 싸워야 할 전투입니다.

도움이 될지 모르겠지만 좀 더 조사를 해본 결과 우리는 Wix 2를 사용하고 있다는 것을 알게되었습니다. 그래서 우리는 PermissionEx를 사용할 수 없었습니다.

0

설정이 내 것과 매우 유사하지만 약간의 차이가 있습니다.

사용자 지정 작업에서 사용 권한을 설정하지 않고 디렉터리를 만듭니다.

<Directory Name="SourceDir" Id="TARGETDIR"> 
    <Directory Id="CommonAppDataFolder"> 
    <Directory Name="$(var.InstallCompany)" Id="CompanyDir"> 
     <Directory Name="$(var.InstallProduct)" Id="ProductDir"> 
     <Directory Name="$(var.InstallFolder)" Id="INSTALLLOCATION"> 
      <Component Id="Permission.InstallFolder" Guid="{7C5234ED-EE92-468A-A765-27E5747705DB}"> 
      <CreateFolder> 
       <Permission ChangePermission="yes" GenericAll="yes" User="Administrators"/> 
       <Permission User="Everyone" WriteExtendedAttributes="yes" WriteAttributes="yes" CreateFile="yes" CreateChild="yes" GenericWrite="no" GenericRead="yes" GenericExecute="yes"/> 
      </CreateFolder> 
      </Component> 
     </Directory> 
     </Directory> 
    </Directory> 
    </Directory> 
</Directory> 
+0

감사합니다. @Max. 위에서 언급 한 내용을 시도했지만 폴더가 만들어 졌다고 생각하지만 .NET 응용 프로그램의 일부로 덮어 쓰면 덮어 쓰므로 설치가 완료되기 전에 사용 권한을 업데이트하려고 시도하고 있습니다. –

+0

내 솔루션과 비슷한 것을 시도 했습니까? 이 폴더에 할당 된 파일 때문에 폴더가 자동으로 생성된다고하셨습니다. 하지만 당신은 그것을 명백하게 만들지 않았습니까? – Max

+0

안녕하세요, 응답을 보내 주셔서 감사합니다. 그래, 내가 명시 적으로 를 사용하여 폴더를 만들었지 만 제대로 작동하지만 설정 권한이 덮어 쓰여지고 있으므로 사용자 지정 작업을 사용하여 해당 작업을 지정하려고합니다. 폴더가 생성됩니다. –