[ Gorothan @ 24.07.2008. 20:45 ] @
Moze li mi neko reci zasto vb program koji sadrzi winsock kontrolu ne moze da se pokrene na nekim kompjuterima? Npr. napravio sam jedan p2p chat koji koristi winsock i kada ga kompajliram u .exe, posaljem nekom ortaku da isprobamo, kod njega ne radi. Izbacuje error... Moze li mi neko reci kako da resim to?
Hvala vam unapred.


~ Gorothan
[ KaAmIkAzA @ 25.07.2008. 07:32 ] @
Jesi prenjeo i kontrolu mswinsck.ocx mislim da ti je zbog toga, pa javi. Znaci ako si kompajlovo u .exe tvoj program to ti nije zavrsena prica moras i kontrole koje koristis prenjeti na druge racunare.
[ Aleksandar Vasic @ 25.07.2008. 09:50 ] @
tacnije, potrebni su runtime fajlovi u system32, tj. fajlovi koji su potrebni za pokretanje tog programa...Da bi video koji su to fajlovi, mozes pomocu Package & Deployment Wizard da napravis instalaciju, ali ne da je koristis, vec samo da vidis u .cab arhivi koji su fajlovi smesteni...
[ Gorothan @ 26.07.2008. 03:52 ] @
Ja sam probao kod ortaka da kopiram u system i u system32 mswinsck.ocx i pretpostavljao sam da ce raditi, medjutim opet je izbacivalo istu gresku. Kasnije sam malo ceprkao po net-u i nasao neko resenje koje je isto kao moje koje sam primenio kod ortaka. Znaci, ta opcija otpada. Kopirao sam prvo u WINDOWS\system\ pa kasnije i u WINDOWS\system32 al nije nista pomoglo.. Probacu sad sa tim installer wizzardom pa javljam sta sam uradio.. Hvala na odgovorima.


~ Gorothan
[ KaAmIkAzA @ 26.07.2008. 07:45 ] @
Nije ti dovoljno samo da kopiras u system32 nego moras i registrovati komponentu.
[ dava @ 29.07.2008. 14:14 ] @
A registruje se tako sto u command promptu se pozicioniras na putanju system32 (predhodno tu kopiras .ocx) i udaris komandu

regsvr32 imekontrole.ocx

unregistracija se vrsi:

regsvr32 /u imekontrole.ocx

[ Aleksandar Ružičić @ 29.07.2008. 18:46 ] @
ne mora da bude ocx unutar system32 foldera, tj ukoliko je custom dll/ocx onda je pozeljnije drzati ga uz aplikaciju a ne trpati sve u sistemski folder (mada je u ovom slucaju bolja solucija kopirati u system32)

da ne bi pokretali command promt (posto ima onih programera koji iz ne znam kojih razloga ne vole da koriste konzolu) mozete napraviti ovakav .vbs fajl:
Code:

Dim FSO
Dim RegShell
Dim regsvr
Dim answer1
Dim answer2

answer1 = MsgBox("This script will add Register and Unregister" & vbCrLf & _
                "options to right-click menu on *.dll and *.ocx files" & vbCrLf & _
                "allowing you to just double-click *.dll or *.ocx file" & vbCrLf & _
                "to register it!" & vbCrLf & vbCrLf & _
                "Click 'Yes' to continue." & vbCrLf & _
                "If you want to remove this feature click 'No'." & vbCrLf & _
                "Click 'Cancel' to leave settings unchanged.", _
                vbYesNoCancel + vbQuestion, "DLL & OCX reg-unreg")

answer2 = MsgBox("Do you want to display *.dll and *.ocx files as icons in explorer?", _
                vbYesNoCancel + vbQuestion, "DefaultIcons")

Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set RegShell = WScript.CreateObject("WScript.Shell")

regsvr = Replace(FSO.getSpecialFolder(1) & "\RegSvr32.exe", "\\", "\")

If answer1 = vbYes Then
    If FSO.FileExists(regsvr) = False Then
        Call MsgBox("RegSvr32.exe file not found!" & vbCrLF & _
                    "Cannot continue setup.", vbOKOnly + vbCritical, "Error")
    Else
        Dim cmdReg
        Dim cmdUnreg

        cmdReg = Chr(34) & regsvr & Chr(34) & " " & Chr(34) & "%1" & Chr(34)
        cmdUnreg = Chr(34) & regsvr & Chr(34) & " /u " & Chr(34) & "%1" & Chr(34)
        
        Call RegShell.RegWrite("HKCR\dllfile\shell\open\", "Register")
        Call RegShell.RegWrite("HKCR\dllfile\shell\open\command\", cmdReg)
        Call RegShell.RegWrite("HKCR\dllfile\shell\unreg\", "Unregister")
        Call RegShell.RegWrite("HKCR\dllfile\shell\unreg\command\", cmdUnreg)
        Call RegShell.RegWrite("HKCR\ocxfile\shell\open\", "Register")
        Call RegShell.RegWrite("HKCR\ocxfile\shell\open\command\", cmdReg)
        Call RegShell.RegWrite("HKCR\ocxfile\shell\unreg\", "Unregister")
        Call RegShell.RegWrite("HKCR\ocxfile\shell\unreg\command\", cmdUnreg)

    End If
Else
    If answer1 = vbNo Then
        Call RegShell.RegDelete("HKCR\dllfile\shell\open\")
        Call RegShell.RegDelete("HKCR\dllfile\shell\unreg\")
        Call RegShell.RegDelete("HKCR\ocxfile\shell\open\")
        Call RegShell.RegDelete("HKCR\ocxfile\shell\unreg\")
    End If
End If

If answer2 = vbYes Then
    Call RegShell.RegWrite("HKCR\dllfile\DefaultIcon\", "%1")
    Call RegShell.RegWrite("HKCR\ocxfile\DefaultIcon\", "%1")
Else
    If answer2 = vbNo Then
        Call RegShell.RegWrite("HKCR\dllfile\DefaultIcon\", "")
        Call RegShell.RegWrite("HKCR\ocxfile\DefaultIcon\", "")
    End If
End If

i pokrenuti ga (dupli-klik).. ovo sam davno napisao bas zbog jednog takvog programera koji ne voli rad u konzoli...
[ dava @ 29.07.2008. 21:43 ] @
Citat:
ne mora da bude ocx unutar system32 foldera, tj ukoliko je custom dll/ocx onda je pozeljnije drzati ga uz aplikaciju a ne trpati sve u sistemski folder


Nigdje ja nisam rekao da mora biti u system32 ali je po meni to bolje rjesenje. Ako drzis u folderu gdje je program uvijek postoji opasnost na taj folder prekopiras na neko drugo mjesto ili ga jednostavno preimenujes i path je izgubljen. ;)

Mogao si to izvesti i sa batch fajlom sljedeceg sadrzaja (koji je naravno na istoj putanji gdje i .ocx):

Code:

regsvr32 imeKontrole.ocx /s
regsvr32 imeKontrole2.ocx /s
regsvr32 imeKontrole3.ocx /s
[ Aleksandar Ružičić @ 29.07.2008. 22:20 ] @
ja sam mislio na situaciju kada radis instalaciju programa, jedan od razloga zasto postoji dll hell je sto vecina programera misli da je najbolje smestiti dll u sistemski folder pa nema veze ako je neka druga aplikacija predhodno instalirala u isti taj sistemski folder dll fajl istog imena ali novije verzije...

a sto se tice ovoga sa batch fajlom, to je ok pristup ali ako pokrenes onu skriptu (nema veze odakle je pokreces), sto je dovoljno samo jednom da uradis, dobices dve nove komande "Register" i "Unregister" u context meniju windows explorera za sve fajlove sa ekstenzijom dll i ocx. tako da mozes duplim klikom da registrujes dll/ocx fajl a desnim klikom i odabirom opcije "Unregister" da unregistrujes. bar ja koristim ovaj pristup, nekako mi je elegantnije resenje nego da pisem batch fajl svaki put...
[ Lord_Nenad @ 01.08.2008. 05:11 ] @
Koji error pishe?

Za mswinsck.ocx je dovoljno da ga kopirash u system32 i nista vise, ovo sam probao na 50tak rachunara od kojih bar 40 nisu imali mswinsck.ocx ;)
Stavi mswinsck.ocx kao resurs programa, i kad se pokrene program nek proveri da li ima mswinsck.ocx, ako nema samo resurs snimi kao mswinsck.ocx ;)
[ Aleksandar Ružičić @ 01.08.2008. 05:19 ] @
ocx je ustvari ActiveX DLL, tj COM dll koji da bi mogao da se koristi mora biti registrovan, nije dovoljno samo kopiranje. (dobro, postoje metode koje dozvoljavaju koriscenje activex dllova koji nisu registrovani, ali to je vec malo advanced)
[ Lord_Nenad @ 01.08.2008. 05:35 ] @
:S ako ti tako kazes... ;)
ja sam svoje rekao, i to je provereno da radi ;)
Imam program koji koristi mswinsck.ocx i koji je radio na bar 40 kompova koji nisu imali mswinsck.ocx ;)