Usuário com melhor resposta
Application.StartupPath - Não funciona depois de instalada a aplicação - VB.Net 2005

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.StartupPathEm 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
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
Todas as Respostas
-
-
-
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.
-
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 StringCaminhoAplicacao =
"" Dim i, tamanho As Integer Dim s As Strings = Application.ExecutablePath
'ou s = Application.StartupPathtamanho = 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" ThenCaminhoAplicacao = 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 = "" ThenCaminhoAplicacao =
"c:\dados" End If ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'para testar qual a path que foi aplicada:MessageBox.Show(CaminhoAplicacao)
End FunctionNã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
-
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