Construindo no Windows 7

3

No meu trabalho, recentemente passamos do XP para o Windows 7 e, como desenvolvedor, tem sido um pesadelo. Eu desenvolvo para sistemas embarcados, então nosso processo de construção pode ser um pouco diferente. Nosso processo de criação é extremamente complicado e gera muitas cópias de arquivos, que precisam ser movidos e copiados. O problema é que a construção geralmente falha porque não tem permissão para copiar um arquivo.

Em todo o meu diretório de build, eu rodaria

takeown /F * /R /D Y
icacls . /T /Grant <userid>:F

A partir do diretório de compilação da raiz, mas ainda tenho problemas ao copiar arquivos (não é possível criar o arquivo regular 'bla.bla': Permissão negada). Então, sou forçado a tocar manualmente no arquivo, definir o modo para + www e construir novamente.

Minha pergunta é se existe uma maneira simples de obter uma árvore de diretórios para que qualquer usuário / aplicativo possa criar / modificar todos os arquivos dentro dela. icacls não parece cortá-lo.

EDIT: Informação extra: Windows x64, GNU make, usando um arquivo bat para definir variáveis ambientais antes de chamar make

    
por Gdogg 01.06.2011 / 20:25

2 respostas

2

Localize o diretório de criação no Windows Explorer gráfico, clique com o botão direito nele e selecione Propriedades . Vá para a aba Segurança , e clique no botão Avançado , e então na janela que aparece, clique no botão Avançado . Se Incluir permissões herdáveis do pai desse objeto estiver marcado, desmarque-o. Escolha Remover na caixa de diálogo de aviso que aparece. Se alguma ACL permanecer na caixa Entradas de permissão , exclua-as.

Agora, selecione Adicionar , insira seu nome de usuário, clique em OK . Em seguida, uma caixa de diálogo que permite selecionar permissões para esse usuário é exibida. Marque a caixa Full Control em Grant e clique em OK . Repita para outras contas ou grupos de usuários que precisam acessar o diretório, se houver. Além disso, adicione Controle total para o grupo Administradores e o usuário SYSTEM interno apenas para o caso. Se o diretório estiver em sua máquina local e você só puder efetuar logon, talvez queira apenas dar ao grupo Everyone controle total, para ter certeza absoluta de que as coisas funcionarão.

Em seguida, selecione o Substitua todas as permissões de objeto filho por permissões herdáveis deste objeto . A caixa de diálogo deve agora ser algo como isto:

Por fim, clique em OK e escolha Sim para verificar se deseja sobrescrever a permissão de todos os arquivos e subdiretórios desse diretório. Isso substituirá qualquer combinação de permissões de alfabeto que você tenha com permissões que correspondam exatamente ao que você acabou de aplicar ao próprio diretório de criação. Além disso, as alterações nas permissões do diretório de criação serão automaticamente propagadas para todos os arquivos abaixo delas agora, portanto, você só precisará alterar as permissões do diretório de compilação no futuro, em vez de fazê-lo recursivamente por todo o diretório.

    
por 01.06.2011 / 21:56
0

Para começar, eu executaria a ferramenta que você está usando para construir / mover como administrador, o que deve corrigir muitos dos problemas. Além disso, quando você diz que ICacls não parece cortá-lo, ele não lhe dá os direitos, ou lhe dá os direitos, mas você ainda está com problemas?

    
por 01.06.2011 / 21:25