GetDirectories Ligue para MSI A CustomAction lança exceção de segurança somente quando todos os usuários

StackOverflow https://stackoverflow.com/questions/3808832

Pergunta

Tenho uma ação personalizada que estou usando para implantar alguns arquivos que ficam ao lado do MSI no pacote de entrega. Minha ação personalizada é aprovada no caminho do MSI através do parâmetro OriginalDatabase e estou verificando se há uma pasta ao lado. Nada muito louco, mas foi uma dor na bunda para descobrir.

A instalação de usuários únicos ou múltiplos de arquivos copiados funciona localmente como um campeão. Instalar o usuário único ao executar o setup.exe de um compartilhamento de rede funciona bem, no entanto, quando instalo todos os usuários de um compartilhamento de rede, estou obtendo uma exceção de segurança.

A linha em questão é a seguinte:

DirectoryInfo[] subdirectories = workingDirectoryInfo.GetDirectories("Foo");

A ação personalizada é executada com SecurityAction.Demand Então, eu deveria ter todo o acesso de que preciso.

Qualquer entrada que alguém possa fornecer é muito apreciada.

Obrigado, Casey

Foi útil?

Solução

Acredito que quando você instala por usuário, o lado do servidor não precisa elevar para fazer a transação, para que seja personificante o usuário interativo e possa acessar os arquivos. Quando você instala para todos os usuários, ele precisa elevar, então agora está em execução basicamente como sistema que usaria a conta da máquina para acessar os arquivos e o boom, você recebe um erro de permissões.

Posso perguntar por que esses arquivos não estão no seu instalador? Não existe uma maneira de incluí -los para que você não precise ter a ação personalizada? Caso contrário, talvez você precise escrever uma ação personalizada que detecte o DatAbase original em uma rede e impedir a instalação, a menos que o usuário copie todos os arquivos antes de executar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top