2012-07-05 4 views
0

설치하는 동안 WIX 3.6 설치 프로젝트를 디자인 중입니다. 설치하는 동안 사용자가 설치 폴더 (INSTALLDIR, 특히 기본 설치 폴더 인 Program Files)에 대한 파일 사용 권한을 생성해야합니다. 사용자는 일반적으로 파일을 만들 수 없습니다. 우리는 몇 가지 실패를 경험했습니다.) 나는 그것이 CreateFile 속성과 함께 Permission 요소를 설정하여 얻을 수 있다고 생각한다. 그러나 INSTALLDIR은 디렉토리이며 CreateFolder, File, FileShare, Registry, ServiceInstall과 같은 요소 만이 permission 요소를 가질 수 있습니다. 그래서 누구나 저에게 어떻게 할 수 있겠습니까? 내 디렉토리 선언은 다음과 같습니다.WIX에서 INSTALLDIR 폴더 권한을 부여하는 방법은 무엇입니까?

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFiles64Folder"> 
     <Directory Id='MANUFACTUREFOLDER' Name='$(var.ManufacturerName)'> 
     <Directory Id="INSTALLDIR" Name="$(var.ProductName)"> 

고마워요!

업데이트 : 이제 배포 된 파일이 아니라 생성 된 파일이 하나의 배포 된 파일을 기반으로 만들어지며 커밋 단계의 사용자 지정 작업에서 생성됩니다. 그러나 지금 방금 설명한 배포 된 파일을 삭제하는 데 문제가 있습니다 (다른 파일이 성공적으로 생성 된 후 사용하지 않기 때문에). 설치 폴더가 Program Files 일 때 사용자 지정 작업에서 삭제할 수 없습니다. 액세스가 거부되었습니다.

또 다른 것은 CreateFolder 요소의 목적을 이해하지 못한다는 것입니다. 그 이름이 암시 하듯이 폴더를 만드는 것이 목표라면 내 예제 코드에서와 같이 중첩 된 Directory가 동일한 작업을 수행하지 않습니까? 그리고 CreateFolder 요소가있는 Component 요소와 Directory 요소를 분리하는 것이 매우 일반적이므로 폴더 구조를 설명하는 것이 더 분명하다고 생각합니다. Component는 DirectoryReference를 사용하여 올바른 디렉토리를 참조합니다. 둘째, 여러 구성 요소가 동일한 디렉토리에 상주하는 것이 일반적입니다. 따라서 CreateFolder를 해당 구성 요소 중 하나에 추가하면 해당 기본 구성 요소의 공통 상위 디렉터리로 기본 디렉터리가있는 것이므로 무엇을 의미합니까? 그것은 그러한 구조에 직관적이지 않습니다.

답변

1

위에서 언급 한 것처럼 CreateFolder 요소에는 Permission 요소가있을 수 있으며 디렉터리가 지정되지 않은 경우 부모 구성 요소의 디렉터리가 기본값입니다. 그래서 구조는 다음과 같습니다. 프로그램 파일 디렉토리가 꽤 아래로 잠겨 있기 때문에 여전히이 문제를 가지고있는 경우 Vista 및 Windows 7 제한 및 Windows 로고 가이드 라인을 기반으로하지만

<Directory Id="INSTALLDIR" Name="$(var.ProductName)"> 
    <Component> 
    <CreateFolder> 
     <Permission> 
     </Permission> 
    </CreateFolder> 
    </Component> 
</Directory> 

는, 나는 놀라지 않을 것이다. 설치 후에는이 디렉토리에 쓰지 말아야합니다.

+0

답장을 보내 주셔서 감사합니다. 댓글에 글자 수 제한이 있기 때문에 원래 게시물의 업데이트를 참조하십시오. CreateFolder 요소에 대해 더 궁금한 점이 있습니다. – tete

+0

이 질문에 추가 할 업데이트가 있거나 게시 한 다른 질문에 대해 이야기하고 있습니까? http://stackoverflow.com/questions/11346936/unable-to-delete-deployed-file-during-installation-with -wix-installer – BryanJ

+0

나는 당신이 언급 한 질문에 대해 정말로 말하고 있습니다. 그러나 나는 또한이 게시물에서 내가 겪고있는 문제를 설명하는 업데이트를 추가했다. 왜냐하면 그들은 꽤 관련이 있기 때문입니다. 의견이 있으시면 두 게시물에 대해 의견을 말하십시오. 기본적으로 CreateFolder 요소를 이해하지 못합니다. 예제 코드에서 그 목적은 무엇입니까? – tete

관련 문제