none
Application.StartupPath - Não funciona depois de instalada a aplicação - VB.Net 2005 RRS feed

  • Pergunta

  • Caros Amigos

    Necessito de usar a Application.StartupPath para definir a path de uma base de dados Access. Quando executo a aplicação em desenvolvimento (a partir do Visual Studio) retorna-me a path correcta mas depois de criado o setup e instalada a aplicação no computador (mesmo no computador em que a aplicação foi desenvolvida) a Application.StartupPath retorna uma string vazia e a aplicação vai procurar a base de dados na raiz do disco:

    Friend caminho As String = Application.StartupPath

    Em desenvolvimento retorna:

     "C:\Documents and Settings\ralmeida\Os meus documentos\Visual Studio 2005\Projects\Logs\Bin"

    E em execução normal (depois de instalada) retorna ""

    É possível que tenha a ver com permissões mas também não sei como definir as permissões necessárias!

    Agradecia sinceramente qualquer ajuda.

    Obrigado

    Rui Almeida

     

     

    sábado, 21 de outubro de 2006 15:12

Respostas

  • Caros Amigos

    BUG!!!!!

    O erro é meu:

    A função CaminhoAplicação teria sempre de retornar uma string vazia se a  Application.ExecutablePath (ou StartupPath) não contivesse a pasta Bin... que era o caso desta aplicação que estou a desenvolver.

    Como, por norma, incluo a pasta Bin em todas as aplicações nunca tinha reparado no bug!!!!!

    As minhas desculpas e um grande obrigado a todos os que tentaram ajudar-me.

    Rui Almeida

     

     

    quinta-feira, 26 de outubro de 2006 10:11

Todas as Respostas

  • Rui,

    Se vc quer descobrir a pasta do seu aplicativo, onde provavelmente está o MDB, use "Application.ExecutablePath".
    segunda-feira, 23 de outubro de 2006 10:51
  • Obrigado Gesial mas infelizmente o resultado continua a ser o mesmo! Em desenvolvimento (a partir do Visual Studio 2005) retorna a path correcta mas depois de instalado retorna uma string vazia!

     

     

    segunda-feira, 23 de outubro de 2006 14:15
  • Olha, tem algo errado... "nunca" vai voltar vazio pq esta propriedade retorna o caminho atual do aplicativo, ou seja, se o aplicativo está em "C:\Tem\SeuAplicativo.exe", então ele vai retornar "C:\Temp"... não há como fugir disto... por favor, poste seu código para podermos entender melhor.


    terça-feira, 24 de outubro de 2006 16:18
  • Caro Amigo

    Tem razão... devia retornar sempre a path do executável... pelo menos sempre era assim...

    Na verdade já formatei o pc e reinstalei tudo de novo e ficou tudo na mesma!

    Aqui vai a função que utilizo:

    Friend Function CaminhoAplicacao() As String

    CaminhoAplicacao = ""

    Dim i, tamanho As Integer

    Dim s As String

    s = Application.ExecutablePath

    'ou s = Application.StartupPath

    tamanho = Len(s)

    'Para certificar que inicia em .../bin:

    For i = tamanho To 1 Step -1

    If Mid(s, i, 1) = "\" Then

    If Mid(s, i + 1, 3) = "bin" Then

    CaminhoAplicacao = Mid(s, 1, i + 3)

    Exit For

    End If

    End If

    Next

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    'este teste foi colocado porque em "produção" não devolve a path do executável

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    'se retornar uma string vazia aplicar o caminho alternativo:

    If CaminhoAplicacao = "" Then

    CaminhoAplicacao = "c:\dados"

    End If

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    'para testar qual a path que foi aplicada:

    MessageBox.Show(CaminhoAplicacao)

    End Function

     

    Não sei se terá a ver com permissões. Será necessário dar alguma permissão especial para se ler a path?

    Um abraço

    Rui Almeida

    terça-feira, 24 de outubro de 2006 18:03
  • Caros Amigos

    BUG!!!!!

    O erro é meu:

    A função CaminhoAplicação teria sempre de retornar uma string vazia se a  Application.ExecutablePath (ou StartupPath) não contivesse a pasta Bin... que era o caso desta aplicação que estou a desenvolver.

    Como, por norma, incluo a pasta Bin em todas as aplicações nunca tinha reparado no bug!!!!!

    As minhas desculpas e um grande obrigado a todos os que tentaram ajudar-me.

    Rui Almeida

     

     

    quinta-feira, 26 de outubro de 2006 10:11