Como aplico permissões de pasta no WiX, mantendo as permissões existentes, mas sem recursão?
-
13-12-2019 - |
Pergunta
O seguinte aplicará (modificará) permissões recursivamente e respeitará as permissões atuais:
<util:PermissionEx User="[MYUSER]" Domain="[NT_DOMAIN]" GenericRead="yes" GenericWrite="yes" GenericExecute="yes" Delete="yes" DeleteChild="yes" />
Mas não quero aplicá-lo recursivamente!
Eu quero isso de forma não recursiva, ou seja,apenas aquela pasta e sem filhos.
(Acredito que o elemento mais antigo limpa a herança de permissões da pasta pai, o que significa que não é bom para meus propósitos, pois devo preservar as permissões existentes).
Existe alguma maneira de dizer ao PermissionsEx para não aplicar as permissões recursivamente?Posso combinar os nós PermissionEx e Permission de alguma forma para obter o efeito desejado?Ou minha única opção é emitir uma chamada de linha de comando de ação personalizada para cacls.exe?
Solução
Não tenho certeza se algum dos três padrões integrados (dois do MSI e um da extensão WiX) lida com esse cenário.FWIW, acho que não é realmente uma função do objeto para o qual você está definindo permissões, mas sim uma função de todos os objetos filhos que escolheram herdar.Em outras palavras, o pai não impõe a propagação e os filhos optam pela herança.
Então você pode ter que fazer alguma reflexão sobre todos os filhos e então configurá-los para bloquear a propagação.O esforço e o risco são altos, então eu me pergunto por que isso é realmente necessário e se você não pode simplesmente criar seu próprio novo diretório filho e definir as permissões dessa maneira, você não precisa se preocupar com esse problema.