Първо благодаря на
wqwe за градивната критика относно PayDocs_portable. Един приятел беше ме помолил да му направя такъв вариант. Тествахме го на различни компютри и нямаше проблем. След забележките на wqwe инсталирахме на едно дискче за проби Windows 98 и разбрахме, че програмата е работила, защото на всички компютри е имало инсталиран офис пакет и ActiveX компонентите, които нашата програма ползва вече са регистрирани при инсталацията му. Иначе динамичните библиотеки, ако са в текущата или системната папка не се нуждаят от регистрация.
Както не всеки израз е подходящ за логаритмуване, така и не всяка програма е подходяща за Portable вариант, особено, ако ползва някоя база данни.
Все пак изход има. Тъй като DAO360.DLL е компонент, нуждаещ се от регистрация, решихме, че можем да го регистрираме от самата програма по следния начин: (примерът е на Visual Basic 6.0)
Декларираме API функцията, която дава пътя до системната директория.
Private Declare Function GetSystemDirectory Lib "kernel32.dll" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Sub RegCompnent ()
Dim a$
Dim b$
Dim sysdir As String ' тук се записва пътят до системната директория
Dim slength As Long ' тук се записва дължината на пътя
sysdir = Space(255)
slength = GetSystemDirectory(sysdir, 255) ' чете дължината на пътя до системната директория
sysdir = Left(sysdir, slength) ' извлича пътя до системната директория от буфера
a$ = "dao360.dll"
b$ = sysdir + "\" + a$
If Exist(a$) Then ' Exist е наша функция за проверка съществуването на файла
FileCopy a$, B$ ' файлът се копира в системната директория
Shell "regsvr32 " + B$ > Null ' тук става самото регистриране, съобщенията на regsvr32 се скриват за да не тревожат потребителя
End If
End Sub
По принцим може да се направи списък и всички компоненти да се регистрират по този начин.
Необходимо е файловете да са записан на място, което да не е на флашката, защото, ако други програми ползват тези компоненти, то при изваждане на флашката те може да блокират.
Този метод е тестван на Win98 и XP и работи перфектно. Дори и да се изтрие папката, това няма да се отрази на работата на компютъра.
Предлагам тази тема на коментар, по простата причина, че може да е полезна за програмистите и освен това някой, който се е сблъсквал с тези проблеми може да акцентира за вероятни възможности за гафове.
След анализите новата PayDocs_portable ще бъде публикувана в Download.bg.