none
VS2010 Ultimate Original - Compilo o projeto e não roda em outra maquina. RRS feed

  • Pergunta

  • Olá.

    PC de trabalho: i7, W7, VS2010 Ultimate, C#; vou chama-lo de pc1.

    Criei um projeto. Compilei. Neste pc1, o app compilado roda. Copiei a app para outros pcs; não rodou em XP, Vista, W7.

    Instalei o VS2010 Express em outro PC2 i7, W7; vou chama-lo de pc2.

    Copiei o projeto do pc1 para o pc2, compilei e rodou em outros pcs. O que preciso fazer para que minha compilação do pc1 rode em outros pcs? Muito agradecido, 


    silvio pontes

    sexta-feira, 10 de maio de 2013 03:39

Respostas

Todas as Respostas

  • Olá,

    Primeiramente o básico: sua aplicação é windows form, console application ou asp.net? Utiliza acesso a algum banco de dados? Utiliza API do windows ou somente código gerenciado?

    Se for a primeira ou segunda opção, não possuir banco de dados e não utilizar nenhuma API, a única coisa que precisaria no PC 2 é o .NET Framework instalado, de acordo com a versão do .Net que sua aplicação foi gerada.

    Tem alguns casos porém, que quando instalado o VS e alguams ferramentas adicionais, algumas DLLs são colocadas no GAC (Global Assembly Cache) o que faz a utilização destas transparente em tempo de desenvolvimento, porém, na máquina alvo, pode ser que essa DLL não exista e a DLL não tenha sido publicada junto com o restante do projeto. Dessa forma a DLL precisa ir na pasta do seu arquivo compilado ou registrada no GAC (pode-se forçar a dll a ser copiada para o diretório bin quando compilada).

    Se for asp.net, já temos que partir para outras questões referentes ao IIS.

    Se possuir acesso a banco de dados e este não for disponibilizado em um servidor próprio, terá que instalar o gerenciador do banco correspondente e a sua base na máquina.

    Se sua aplicação utilizar alguma API específica (que foge do conceito do código gerenciado do .Net) você terá que verificar se para o respectivo SO esta API está disponível, se não possui nenhum problema conhecido, se não há nenhuma alteração nas assinaturas dos métodos invocados e se possui suporte para para 32 bits/ 64 bits (conforme sua aplicação foi gerada).


    Para melhor entendimento e auxílio ao seu problema, detalhe os recursos que seu projeto utiliza.

    sábado, 11 de maio de 2013 05:31
  • Olá Diego.

    WindForm. C#. Não acesso banco de dados.  Não estou bem certo, mas parece que tem algo a ver com manifesto. Esta aplicação usa duas portas USBs; uma delas USB/RS485. Os drivers estão instalados em todas as maquinas que estou usando para testes.

    Outra coisa Diego, no XP consigo gravar na pasta C:user; no Vista e no 7 não consigo acesso pela aplicação à pasta C:Users. Tem alguma dica?


    silvio pontes

    sábado, 11 de maio de 2013 13:09
  • Olá Silvio,

    A partir do windows Vista, as questões de segurança começaram a ficar mais rígidas e complexas.

    Quando você tenta usar a pasta User, como está tentando o acesso, por algum caminho fixo ou utilizando variáveis de ambiente?

    Qual o erro que a aplicação estoura nessas máquinas? Já tentou executar sua aplicação como "Administrador" para verificar se os problemas ocorrem?

    Em relação ao acesso às portas USB, você utiliza código do .NET ou alguma API específica?

    segunda-feira, 13 de maio de 2013 06:43
  • Olá Diego, 

    em parte o problema esta resolvido. Tinha relação com Manifest e ClickOnce manifests no Project app Properties.

    Agora a app roda em todas as maquinas.

    Gravo meu arquivo config.ini na pasta C:users. Como você pode ver no XP vai gravar, mas no Vista e no 7 não. Como fazer?

    if(!File.Exists("C:\\Users\\app_config.ini"))
                            {
                            IniFile ini=new IniFile("C:\\Users\\app_config.ini");
                            Settings.Write();
                            }


    silvio pontes

    segunda-feira, 13 de maio de 2013 20:34
  • Silvio,

    Já tentou ao invés de jogar na pasta raiz do Users, utilizar a pasta comum de aplicações, conforme exemplo:

    string path = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

    Outra questão em ter chumbado o nome da pasta é que este nome varia de acordo com o idioma do windows.


    • Editado Diego Cotini segunda-feira, 13 de maio de 2013 21:05
    segunda-feira, 13 de maio de 2013 21:01
  • Diego, 

    Precisamos salvar na pasta C:\Users porque o usuário exigiu.

    W7, Vista e XP.


    silvio pontes

    terça-feira, 14 de maio de 2013 10:32
  • Silvio, mesmo você executando a aplicação com um usuário administrador ou executando a aplicação como Administrador (botão direito, executar como administrador) você não consegue acesso?

    Se conseguir, vejo duas opções:

    - Dar acesso para todos nessa pasta (everyone), porém, estas pastas ficarão acessíveis para qualquer aplicação mal intencionada.

    - Impersonalizar a aplicação passando as credenciais de um usuário administrador para acessar a pasta.

    Se precisar de ajuda com impersonalização, segue posts referentes:

    http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/534dcab7-419e-4edb-b22d-17f92e73c346

    http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/47182281-b7fb-4ade-b06e-281417f9c7fe/


    • Marcado como Resposta Silvio Pontes terça-feira, 28 de maio de 2013 00:35
    terça-feira, 14 de maio de 2013 12:46
  • Obrigado Diego.

    silvio pontes

    terça-feira, 28 de maio de 2013 00:36