DIRETO DO PENDRIVE

RICOCARDOZO 04/09/2014 17:44:45
#440958
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

SINCLAIR 04/09/2014 18:25:24
#440959
Colega RICOCARDOZO

Em vb6 vai precisar das VBVM***.DLL (runtimes do VB6 instalados).
RICOCARDOZO 05/09/2014 09:27:58
#440975
Seria a msvbvm60.dll e a stdole2.tlb , mais acredito que estas versões do windows já vem com estas dll
SINCLAIR 05/09/2014 10:22:42
#440978
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.
RICOCARDOZO 05/09/2014 10:51:50
#440981
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.
OCELOT 05/09/2014 11:50:37
#440983
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.
DANLELES 05/09/2014 14:29:08
#440989
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.



RICOCARDOZO 09/09/2014 12:46:54
#441093
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.

MARCELO.TREZE 09/09/2014 20:18:50
#441100
Resposta escolhida
dicas simples use o portabilizer e crie o seu programa portatil

http://www.guiadowindows.net/crie-programas-portateis-com-portabilizer/
RICOCARDOZO 10/09/2014 09:10:07
#441109
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


Tópico encerrado , respostas não são mais permitidas