none
Distribuição de aplicativo RRS feed

  • Pergunta

  •  

    Olá a todos!

     

    Estou com um problema na distribuição de um arquivo.

    Fiz um aplicativo.exe e coloquei ele no servidor da minha empresa. Instalei o Net Framework 2.0 versão Redistributable no servidor e criei uma pasta lá onde copiei todo o conteudo da pasta bin: meu .exe e as .dlls necessárias.

    O servidor é: Windows 2000.

     

    A máquina onde foi gerada o aplicativo era um Windows XP, criado em VS2005.

     

    Porém quando executo o aplicativo da minha máquina ( Windows XP, com VS2005) ele apresenta o seguinte erro:

     

    See the end of this message for details on invoking
    just-in-time (JIT) debugging instead of this dialog box.

    ************** Exception Text **************
    System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
       at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
       at System.Security.CodeAccessPermission.Demand()
       at System.Windows.Forms.Application.Exit(CancelEventArgs e)
       at System.Windows.Forms.Application.Exit()
       at ExportBiro.frmLoginExpBiro.btnCancel_Click(Object sender, EventArgs e)
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    The action that failed was:
    Demand
    The type of the first permission that failed was:
    System.Security.Permissions.SecurityPermission
    The Zone of the assembly that failed was:
    Intranet

     

    O que eu devo fazer?

    Tenho que gerar uma instalação? A versão do Framework está certa?

    Preciso colocar alguma permissão?

    No caso das outras máquinas tenho que instalar qual framework pra rodar???

     

    Obrigada a todos!!!!

     

    Abraços

    Fabi

    segunda-feira, 20 de agosto de 2007 17:12

Respostas

Todas as Respostas

  • Fabiana, primeiro de tudo, nunca faça isso, não distribua sua aplicação dessa forma. Existem outras maneiras de distribuir uma aplicação .Net: ClickOnce, Setup Project, etc. Mas se ainda sim quiser fazer dessa forma, esse erro ocorre devido as restrições de segurança do .Net, você terá que ir em cada máquina e configurar isso. Lembrando que a versão 2.0 não tem interface no cliente.

    segunda-feira, 20 de agosto de 2007 17:38
  • Leandro

     

    Então se eu criar uma instalação (setup) resolverá esses problemas?

    O meu problema é o seguinte o cliente não quer que eu instale em cada máquina.

    Ele quer deixar no servidor e quer que todos acessem de lá...

    Quer criar nas máquinas clientes somente um atalho.. e no máximo instalar o framework...

     

    O que posso fazer pra atender essa exigência, sem causar erros?

     

    Lembrando que meu servidor é 2000 mas tenho na rede máquinas 98, 2000 e XP.

     

    Como faço com cada caso?

     

    Muito Obrigada pela atenção...

     

    Abraços

    Fabi

     

     

    segunda-feira, 20 de agosto de 2007 17:48
  • Às vezes os clientes não sabem o que estão pedindo ou vivem na pre-história, então cabe a você convencê-los, e para isso você deve conhecer as alternativas viáveis. Para o seu caso ClickOnce será a melhor saída, já que ele não quer que instale em cada máquina. Agora, dê uma estudada nele para ter argumentos para apresentar.

    segunda-feira, 20 de agosto de 2007 18:05
  • Valeu pela dica vou pesquisar...

     

    Abraços

    Fabi

    segunda-feira, 20 de agosto de 2007 18:20
  • Oi Leonardo

     

    Desculpe voltar nesse assunto...

    Pesquisei bastante sobre o ClickOnce é realmente é uma boa opção.

    Vou guarda-lo na manga ! Mas preciso tentar o outro jeito.

    Na resposta acima você diz que tenho que configurar em cada máquina.

    Desculpe a ignorância, pois nunca me encontrei numa situação como essa.

    Mas o que exatamente tenho que configurar em cada máquina?

    Como faço isso?

    A versão 2.0 não tem interface mas tem como configurar por linha de comando ?

    Tem algum exemplo ou algum link por ai pra mim consultar?

     

    Grata

    E desculpe mais uma vez voltar nesse problema

     

    Fabi

     

    terça-feira, 21 de agosto de 2007 14:24
  • Oi Leonardo

     

    Tentei executar o procedimento:  VB.NET - Distribuindo aplicações com segurança

    Porém continua o problema.

    Pelo que eu li do seu artigo estou distribuindo minha aplicação no esquema XCopy.

     

    Além de seguir o procedimento de configuração do Framework preciso incluir algo no código?

    Eu tentei executar aqui na minha máquina eu deveria fazer isso no servidor?

     

    Outra coisa as imagens do link estão quebradas... então fiz dando acesso a tudo...

     

    Mais uma vez agradeço a sua colaboração e atenção

     

    Fabi

    quarta-feira, 22 de agosto de 2007 14:16
  •  

    Oi Leonardo

     

    Procurando e tentando aqui consegui de um jeito:

    No Net Configuration 2.0 : Machine: Local_Intranet_Zone: Propriedades: Permission Set; Configurei como Everything.

    E finalmente funcionou.

     

    Mas andei olhando aqui no forum que Permissões Full Trust e Everything não são muito aconselhaveis.

    Você sabe porque? Que mal isso trazer pra minha aplicação, máquina ou rede?

     

    Obrigada pela colaboração e atenção !!!

     

    Fabi

    quarta-feira, 22 de agosto de 2007 14:47
  • Oi Fabiana, o problema é que qualquer aplicativo que tenha na sua evidência essa zona, poderá rodar com Fulltrust. O ideal é que você fizesse isso por aplicativo, como por exemplo utilizando o strong name ao invés da zona.
    quarta-feira, 22 de agosto de 2007 15:03
  • Entendi...

    Obrigada pela explicação.

     

    Mas ainda tenho mais uma dúvida:

    Quando tentei fazer isso (que descrevi acima) na máquina do cliente o problema continua.

     

    Só para detalhar melhor: a máquina é um XP e eu instalei o net framework 2.0.

    Uma coisa que já é estranha é que mesmo instalado ele não habilita o Microsoft .Net Framework 2.0 Configuration

    Só aparece o 1.0 Configuration

    Mas mesmo assim ele apresenta todas as opções acima.

    Fiz o mesmo procedimento e não funciona.

    Agora se eu pego a aplicação e rodo local funciona.

     

    Preciso instalar mais alguma coisa?

    Devo fazer isso por linha de comando? Como deve fazer isso?

    Devo fazer alguma coisa no servidor?

     

    Muito obrigada mais uma vez

    Fabi

     

    E desculpa ficar te alugando com isso. É que realmente estou precisando...

    quarta-feira, 22 de agosto de 2007 19:26
  • Como eu disse anteriormente, o .net 2.0 não tem a interface de configuração. Então você usará  a linha de comando com o utilitário CASPOL.

     

    http://msdn2.microsoft.com/en-us/library/cb6t8dtz(VS.80).aspx

     

     

    quarta-feira, 22 de agosto de 2007 20:10
  •  

    Deu certo!!!

     

    Muito Obrigada!!!!!!!!!!!!!!!!!!!!!!

     

    Abraços

    Fabi

    sexta-feira, 24 de agosto de 2007 01:18