none
Path de pasta criada no projeto após publicação RRS feed

  • Pergunta

  • Boa tarde pessoal,

    estou tomando uma surra, e bem provavelmente deve ser uma bobeira tremenda, mas...me ajudem.
    Tenho uma aplicação onde em ambiente de desenvolvimento exibo uma imagem (aqueles ícones num datagrid). Ela é chamada da seguinte forma:

         num datagrid....     e.Value = Image.FromFile(@"C:\Documents and Settings\Engenharia\Meus documentos\Visual Studio 2005\Projects\SistemaInformatizado\Imagens\Alerta2_16x16.png");

    É claro que após eu publicar o aplicativo e instalar em outra máquina, o path será outro. A dúvida é: Qual o path que eu coloco após o .FromFile para que seja o caminho do folder que tenho criado dentro da aplicação?

    Me desculpem o mole, mas travei!!

    Obrigado.

    Abç

    Pestana
    terça-feira, 3 de novembro de 2009 18:38

Respostas

  • No projeto Setup tem o "Primary output from <Seu projeto>". Se não possuir isso, clica com direito em cima do projeto Setup, dps Add>Project Output

    Abra o Primay output, e lá por padrão, terá 3 pastas e uma delas é a Application Folder. Vc pode criar quantas pastas quiser dentro dessa pasta.

    Se você for apenas usar a imagem, isto é, não modifcá-la, então você pode usar a pasta Application Folder. Porém, se o seu programa, em algum momento, tiver que substituir essa imagem, então eu aconselho usar a pasta chamada "User's Application Data Folder" (é a pasta Dados de Aplicativos ou AppData). É melhor usar essa pasta porque qualquer usuário do windows tem permissão para escrever nela; isso já não ocorre com as pastas dentro de Arquivos de programas. No Windows Xp você consegue escrever no Arquivos de programas, mas não no Vista, com um usuário normal.
    E se você perceber, a maioria dos softwares tem uma pasta no Dados de Aplicativos.

    Para acessar, via código, essa pasta, é simples: Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
    Get a life. Go party!
    • Marcado como Resposta PestanaJr sábado, 21 de novembro de 2009 14:51
    quarta-feira, 18 de novembro de 2009 22:37

Todas as Respostas

  • Pestana,

    você pode utilizar o comando Application.StartupPath
    Ele retorna o caminho completo de onde está o executável (sem o nome do executável).
    Ai concatene com a continuação do seu caminho: Application.StartupPath + "\Imagens\Alerta2_16x16.png" por exemplo

    Só por questão de conhecimento, se um dia precisar do caminho do executável + o nome do executável junto, você pode utilziar o Application.ExecutablePath

    :)

    Espero ter ajudado e caso ajude, por favor marque como resposta!

    Abraços
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)
    terça-feira, 3 de novembro de 2009 18:43
  • Leandro,

    tentei fazer como vc falou mas no path aparece o caminho ....../bin/debug/..... e aí caio no mesmo problema. Ou pior, não consigo nem testar.

    Algo à fazer?

    No aguardo

    Abç

    Pestana
    terça-feira, 3 de novembro de 2009 23:47
  • Pestana,

    o caminho que ele te mostra é o caminho aonde encontra-se o .exe
    Na máquina do client, este caminho /debug vai automaticamente ser alterado para arquivos de programas/seuprograma por exemplo
    É uma variável, ela busca informações da pasta aonde está o executável.

    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)
    quarta-feira, 4 de novembro de 2009 00:15
  • Olá Leandro,

    cara, realmente estou perdido. Fiz como vc explicou mas não funcionou. Vou tentar explicar mais detalhado o que está acontecendo:
    Criei um folder na raiz da solution chamado Imagens.
    Olhando pelo Windows explorer esta pasta Imagens fica no seguinte path:

          C:\Documents and Settings\Engenharia\Meus documentos\Visual Studio 2005\Projects\SistemaInformatizado\Imagens.

    Se eu usar o path para a imagem: Image.FromFile("path acima\Imagem.png"), funciona perfeito quando rodando pelo VS (debug). Mas qdo instalo e rodo no cliente dá erro de path da imagem.

    Usando como vc solicitou (Application.StartupPath ), o path disponível para mim fica assim:

          C:\Documents and Settings\Engenharia\Meus documentos\Visual Studio 2005\Projects\SistemaInformatizado\bin\Debug\Imagens\Vazio_16x16.png

    Repare que aparecem as pastas bin e debug, e desta maneira não funciona no cliente e nem no VS (debug).
    Já tentei criar o Setup de instalação e rodar no cliente mas o caminho apresentado fica igual ao acima, ou seja, com erro. Já tentei tb na hora de gerar o Setup instalador definir como release mas o que muda é que ao invés de ficar no path da instalação \Debug ficaria \Release .

    Tem algo que vc ou alguém possa me ajudar? Não aguento mais tomar tanta surra de uma coisa aparetemente banal.

    No aguardo

    Obrigado

    Pestana
    quinta-feira, 5 de novembro de 2009 13:05
  • Fato, pois como eu falei, ele fica dentro da pasta onde o executável se encontra!
    No cliente como você pretende fazer? C:\Arquivos de Programas\SistemaInformatizado\ ????
    no ???? vai ter uma pasta BIN com as dll's e outra pasta imagens com as imagens? ou dentro da pasta imagens vai ficar sua imagem?


    Outra coisa, já pensou em usar o Resources?? Adicione estas imagens no resource. Faça elas fazerem parte de suas dll's. Fica mais fácil pegar elas e é pra isso que existe o resources.

    Aqui tem uma pequena discussão sobre o assunto que pode ajudar um pouco:
    http://social.msdn.microsoft.com/forums/pt-BR/vsvbasicpt/thread/ac7a03a4-2ab0-48d6-93e0-00680d783a37/

    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)
    quinta-feira, 5 de novembro de 2009 13:23
  • Cara, no projeto Setup crie uma pasta chamada Imagens no Application Folder e coloque as imagens que vai usar lá.
    Aí para acessar essa pasta é só fazer o que o Leandro falou do Application.StartupPath.

    Criando a pasta no Application Folder, quando sua aplicação for instalada, ficará com o seguinte caminho: C:\Arquivos de Programas\Nome Empresa\Nome Software\Imagens para acessar as imagens.

    Agora, para você testar, é só vc criar uma pasta Imagens no C:\Documents and Settings\Engenharia\Meus documentos\Visual Studio 2005\Projects\SistemaInformatizado\bin\Debug

    Assim vc não precisa modificar nenhum código.

    Get a life. Go party!
    • Sugerido como Resposta JobaDiniz sexta-feira, 13 de novembro de 2009 10:34
    quinta-feira, 5 de novembro de 2009 23:13
  • Olá JobaDiniz,

    obrigado pela ajuda. Ainda não implementei, mas com certeza vai funcionar. Não havia me tocado dessa possibilidade de criar esta pasta imagens no Setup de instação. Acredito que ao compilar o setup e levará a pasta junto para o path da instalação, certo?

    Muito obrigado. Vou testar e marco como resposta.

    abç

    Pestana
    sexta-feira, 13 de novembro de 2009 02:09
  • Olá JobaDiniz,

    desculpe a demora, mas estava viajando. Testando como vc falou, não consegui criar a pasta Imagens no Application Folder em Setup1. Como faço para criar essa pasta, e/ou onde seria esse Application Folder?

    No aguardo,

    Obrigado

    Pestana
    quarta-feira, 18 de novembro de 2009 19:48
  • No projeto Setup tem o "Primary output from <Seu projeto>". Se não possuir isso, clica com direito em cima do projeto Setup, dps Add>Project Output

    Abra o Primay output, e lá por padrão, terá 3 pastas e uma delas é a Application Folder. Vc pode criar quantas pastas quiser dentro dessa pasta.

    Se você for apenas usar a imagem, isto é, não modifcá-la, então você pode usar a pasta Application Folder. Porém, se o seu programa, em algum momento, tiver que substituir essa imagem, então eu aconselho usar a pasta chamada "User's Application Data Folder" (é a pasta Dados de Aplicativos ou AppData). É melhor usar essa pasta porque qualquer usuário do windows tem permissão para escrever nela; isso já não ocorre com as pastas dentro de Arquivos de programas. No Windows Xp você consegue escrever no Arquivos de programas, mas não no Vista, com um usuário normal.
    E se você perceber, a maioria dos softwares tem uma pasta no Dados de Aplicativos.

    Para acessar, via código, essa pasta, é simples: Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
    Get a life. Go party!
    • Marcado como Resposta PestanaJr sábado, 21 de novembro de 2009 14:51
    quarta-feira, 18 de novembro de 2009 22:37
  • Perfect JobaDiniz,

    funcionou exatamente como vc disse.

    Muito obrigado.

    Abç

    Pestana
    sábado, 21 de novembro de 2009 14:52