DIRETO DO PENDRIVE
Olá boa tarde;
Faz tempo que estou fazendo um sistema de livro caixa e controles pessoais , e queria torna-lo portable .
Gostaria de uma ajuda de vocês quanto as idéias , que estou colocando em prática, se daria certo o meu raciocÃnio.
Como ele é feito em VB6 e graças a isso ele precisa de poucas ocx pra rodar ,pensei em coloca-lo em uma unica pasta e joga-lo no pen-drive e executar direto de lá.
Por ser um sistema pessoal achei interessante a ideia , pois o usuário poderia usar em casa no trabalho na faculdade ou qualquer lugar , onde tiver um micro acessÃvel , sem a necessidade de instalação na maquina que estiver usando.
Minha duvida seria por exemplo quando inserimos uma ocx no projeto esta ocx se encontra na pasta system32 do windows, teria como referenciar esta ocx para o endereço do pendrive, assim acho que não precisaria ter que copiar as ocx para cada micro que for utilizar.
Criei um form sem nada para que possa ser executado em qualquer sistema windows.
Neste Form terá somente o login e senha do usuário , e posso fazer uma busca se o sistema do usuário possui as ocx necessária para rodar meu sistema , caso não tenha , executa a cópia e faço o registro da ocx , sem o cliente precisar fazer nada.
Estou começando assim.
Private Declare Function GetSystemDirectory Lib [Ô]kernel32[Ô] Alias [Ô]GetSystemDirectoryA[Ô] (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Sub Form_Load()
Dim strWindowsSysdir As String * 20
GetSystemDirectory strWindowsSysdir, 20
LDir_system.Caption = strWindowsSysdir
Ldir_exe.Caption = App.Path
Registro
End Sub
Private Sub Registro()
If Dir(Environ([Ô]WINDIR[Ô]) & [Ô]\SYSTEM32\ACTSKIN4.OCX[Ô], vbArchive) = [Ô][Ô] Then
FileCopy App.Path & [Ô]\ACTSKIN4.OCX[Ô], LDir_system.Caption & [Ô]\ACTSKIN4.OCX[Ô]
Call Shell([Ô]regsvr32 /s ACTSKIN4.OCX[Ô], vbNormalFocus)
Locx1.Caption = [Ô]é preciso registrar ACTSKIN4.OCX[Ô]
Else
Locx1.Caption = [Ô]MSCOMCTL.OCX - Encontrada[Ô]
End If
If Dir(Environ([Ô]WINDIR[Ô]) & [Ô]\SYSTEM32\MSCOMCTL.OCX[Ô], vbArchive) = [Ô][Ô] Then
FileCopy App.Path & [Ô]\MSCOMCTL.OCX[Ô], LDir_system.Caption & [Ô]\MSCOMCTL.OCX[Ô]
Locx2.Caption = [Ô]é preciso registrar MSCOMCTL.OCX[Ô]
Else
Locx2.Caption = [Ô]MSCOMCTL.OCX - Encontrada[Ô]
End If
If Dir(Environ([Ô]WINDIR[Ô]) & [Ô]\SYSTEM32\MSFLXGRD.OCX[Ô], vbArchive) = [Ô][Ô] Then
FileCopy App.Path & [Ô]\MSFLXGRD.OCX[Ô], LDir_system.Caption & [Ô]\MSFLXGRD.OCX[Ô]
Locx3.Caption = [Ô]é preciso registrar MSFLXGRD.OCX[Ô]
Else
Locx3.Caption = [Ô]MSFLXGRD.OCX - Encontrada[Ô]
End If
End Sub
Faz tempo que estou fazendo um sistema de livro caixa e controles pessoais , e queria torna-lo portable .
Gostaria de uma ajuda de vocês quanto as idéias , que estou colocando em prática, se daria certo o meu raciocÃnio.
Como ele é feito em VB6 e graças a isso ele precisa de poucas ocx pra rodar ,pensei em coloca-lo em uma unica pasta e joga-lo no pen-drive e executar direto de lá.
Por ser um sistema pessoal achei interessante a ideia , pois o usuário poderia usar em casa no trabalho na faculdade ou qualquer lugar , onde tiver um micro acessÃvel , sem a necessidade de instalação na maquina que estiver usando.
Minha duvida seria por exemplo quando inserimos uma ocx no projeto esta ocx se encontra na pasta system32 do windows, teria como referenciar esta ocx para o endereço do pendrive, assim acho que não precisaria ter que copiar as ocx para cada micro que for utilizar.
Criei um form sem nada para que possa ser executado em qualquer sistema windows.
Neste Form terá somente o login e senha do usuário , e posso fazer uma busca se o sistema do usuário possui as ocx necessária para rodar meu sistema , caso não tenha , executa a cópia e faço o registro da ocx , sem o cliente precisar fazer nada.
Estou começando assim.
Private Declare Function GetSystemDirectory Lib [Ô]kernel32[Ô] Alias [Ô]GetSystemDirectoryA[Ô] (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Sub Form_Load()
Dim strWindowsSysdir As String * 20
GetSystemDirectory strWindowsSysdir, 20
LDir_system.Caption = strWindowsSysdir
Ldir_exe.Caption = App.Path
Registro
End Sub
Private Sub Registro()
If Dir(Environ([Ô]WINDIR[Ô]) & [Ô]\SYSTEM32\ACTSKIN4.OCX[Ô], vbArchive) = [Ô][Ô] Then
FileCopy App.Path & [Ô]\ACTSKIN4.OCX[Ô], LDir_system.Caption & [Ô]\ACTSKIN4.OCX[Ô]
Call Shell([Ô]regsvr32 /s ACTSKIN4.OCX[Ô], vbNormalFocus)
Locx1.Caption = [Ô]é preciso registrar ACTSKIN4.OCX[Ô]
Else
Locx1.Caption = [Ô]MSCOMCTL.OCX - Encontrada[Ô]
End If
If Dir(Environ([Ô]WINDIR[Ô]) & [Ô]\SYSTEM32\MSCOMCTL.OCX[Ô], vbArchive) = [Ô][Ô] Then
FileCopy App.Path & [Ô]\MSCOMCTL.OCX[Ô], LDir_system.Caption & [Ô]\MSCOMCTL.OCX[Ô]
Locx2.Caption = [Ô]é preciso registrar MSCOMCTL.OCX[Ô]
Else
Locx2.Caption = [Ô]MSCOMCTL.OCX - Encontrada[Ô]
End If
If Dir(Environ([Ô]WINDIR[Ô]) & [Ô]\SYSTEM32\MSFLXGRD.OCX[Ô], vbArchive) = [Ô][Ô] Then
FileCopy App.Path & [Ô]\MSFLXGRD.OCX[Ô], LDir_system.Caption & [Ô]\MSFLXGRD.OCX[Ô]
Locx3.Caption = [Ô]é preciso registrar MSFLXGRD.OCX[Ô]
Else
Locx3.Caption = [Ô]MSFLXGRD.OCX - Encontrada[Ô]
End If
End Sub
Colega RICOCARDOZO
Em vb6 vai precisar das VBVM***.DLL (runtimes do VB6 instalados).
Em vb6 vai precisar das VBVM***.DLL (runtimes do VB6 instalados).
Seria a msvbvm60.dll e a stdole2.tlb , mais acredito que estas versões do windows já vem com estas dll
Olá Colgea RICOCARDOZO
Então...
Eu lembrei-me delas porque em dois casos com Windows 7 Home Basic instalados em um notebook, as mesmas não estavam lá. Precisei baixar do MSDN.
Acredito que apenas no procedimento de tentativa e erro, realmente. Eu fiz várias máquinas virtuais tanto quando possÃvel para testar, mas a quantidade de VM que criei era limitada porque eu tinha original apenas o XP, o 7 Home Premium e o 7 Ultimate. Para não usar nada que seja pirata, só pude testar nestes que te falei.
Tudo de bom.
Então...
Eu lembrei-me delas porque em dois casos com Windows 7 Home Basic instalados em um notebook, as mesmas não estavam lá. Precisei baixar do MSDN.
Acredito que apenas no procedimento de tentativa e erro, realmente. Eu fiz várias máquinas virtuais tanto quando possÃvel para testar, mas a quantidade de VM que criei era limitada porque eu tinha original apenas o XP, o 7 Home Premium e o 7 Ultimate. Para não usar nada que seja pirata, só pude testar nestes que te falei.
Tudo de bom.
Mais achas que na pratica daria certo ,
Por exemplo só utilizo a mscomctl.ocx msflxgrd.ocx stdole2.tlb e a msvbvm60.dll , se eu registrar e copiar do meu pendrive para o sistema do cliente caso não haja no micro do cliente , meu sistema rodaria sem problemas, leve e pratico.
Será que estes arquivos precisam estar no system32 , pra rodar.
Não posso informar no próprio programa que estas ocx e dll se encontra no diretório do pendrive, caso seja possivel não precisaria copiar arquivo pra maquina , seria executado direto do pendrive.
Por exemplo só utilizo a mscomctl.ocx msflxgrd.ocx stdole2.tlb e a msvbvm60.dll , se eu registrar e copiar do meu pendrive para o sistema do cliente caso não haja no micro do cliente , meu sistema rodaria sem problemas, leve e pratico.
Será que estes arquivos precisam estar no system32 , pra rodar.
Não posso informar no próprio programa que estas ocx e dll se encontra no diretório do pendrive, caso seja possivel não precisaria copiar arquivo pra maquina , seria executado direto do pendrive.
Se você criar um projeto no VB e não adicionar nenhuma OCX e não referenciar nenhuma DLL que ele funciona, você precisa só copiar junto para a mesma pasta do exe o MSVBVM60.dll se não me engano, já que assim não é necessário registrar nada para rodar o programa
Usando qualquer OCX ou DLL que precise de registro já complica, pois para poder registrar só o programa sendo executado como administrador, e sendo OCX e DLL comuns de serem usadas por outros programas como as que você disse estar usando elas nunca devem ser registradas sem estar na pasta System32, pois se você registrar elas no pendrive quando um outro programa que use elas for executado ele vai tentar usar as que estão no pendrive, e se o pendrive não estiver conectado acho que já sabe o que vai acontecer.
Usando qualquer OCX ou DLL que precise de registro já complica, pois para poder registrar só o programa sendo executado como administrador, e sendo OCX e DLL comuns de serem usadas por outros programas como as que você disse estar usando elas nunca devem ser registradas sem estar na pasta System32, pois se você registrar elas no pendrive quando um outro programa que use elas for executado ele vai tentar usar as que estão no pendrive, e se o pendrive não estiver conectado acho que já sabe o que vai acontecer.
Ricardo,
Verifica o exemplo que postei. Voce deve colocar no PENDRIVE todas as DLL e OCX que o sistema precisa.
Voce colocar Sub Main na propriedade do projeto (Menu Projetc ==> <Nome Projeto> Properties)
Tem uma opção Startup Object: SUb Main.
Vai apresentar um erro neste exemplo... pois assim que o sistemas copia os arquivos e registra as DLL e OCX substitua o startup.show para o formulário principal da sua aplicação.
Espero ter ajudado.
Verifica o exemplo que postei. Voce deve colocar no PENDRIVE todas as DLL e OCX que o sistema precisa.
Voce colocar Sub Main na propriedade do projeto (Menu Projetc ==> <Nome Projeto> Properties)
Tem uma opção Startup Object: SUb Main.
Vai apresentar um erro neste exemplo... pois assim que o sistemas copia os arquivos e registra as DLL e OCX substitua o startup.show para o formulário principal da sua aplicação.
Espero ter ajudado.
O codigo funciona , desde que executado como admnistrador.
Dei uma procurada , pra ver se tinha como executar direto, sem ter que clicar com o botão direito do mouse e selecionar executar como administrador, mas não achei nada .
Ele dá erro ao copiar , deve ser pelo fato de estar copiando pra uma pasta do sistema, testei no windows xp , e no 7 todas as versões rodou sem problemas só que tem que ser como administrador.
Falta testar no winodows 8 agora.
Mais agradeço as dicas muito util.
Dei uma procurada , pra ver se tinha como executar direto, sem ter que clicar com o botão direito do mouse e selecionar executar como administrador, mas não achei nada .
Ele dá erro ao copiar , deve ser pelo fato de estar copiando pra uma pasta do sistema, testei no windows xp , e no 7 todas as versões rodou sem problemas só que tem que ser como administrador.
Falta testar no winodows 8 agora.
Mais agradeço as dicas muito util.
dicas simples use o portabilizer e crie o seu programa portatil
http://www.guiadowindows.net/crie-programas-portateis-com-portabilizer/
http://www.guiadowindows.net/crie-programas-portateis-com-portabilizer/
Ola , dei uma olhada mais pelo que vi o portablizer funciona desde que não precise copiar arquivios pra pasta system do windows.
Bom seria se pudesse manter as ocx em uma pasta temp, nem mexer com a system rss.
Executa Exe >
verifica se existe ocx ou dll no system >
caso nao exista copia pra temp registra e roda.
finish
Bom seria se pudesse manter as ocx em uma pasta temp, nem mexer com a system rss.
Executa Exe >
verifica se existe ocx ou dll no system >
caso nao exista copia pra temp registra e roda.
finish
Tópico encerrado , respostas não são mais permitidas