Je, nitumie electron kudevelop desktop App?

mathsjery

JF-Expert Member
Sep 26, 2015
2,208
1,755
Hii itakuwa mara ya kwanza kuunda desktop app na nataka iwe na uwezo wa kudai licence key sitaki mambo mengi lakini nachotaka ni ushauri maana sikuwahi kuunda desktop app kwa maisha yangu yote.

Kinacho nifanya nifikie hatua hii nikwamba nataka user au mteja aitumie kwenye machine yake but ntakuwa natrack time then natuma kwenye server yangu kama muda wa leseni umeisha basi inaprompt kwa mteja kuweka key mpya ambazo atanunua online kutoka kwenye site yangu.

Huyu user atatakiwa kuwasha internet walau mara moja kwa wiki au mwezi ili app icheki validity ya leseni.

Sijui kama nimejieleza vizuri nataka kujua je nitumie solution ipi ? kumbuka sitaki user atumie app akiwa online muda wote isipokuwa siku hizo.

Tunazidiana maarifa naoma ushauri!
 
Ndio umejieleza vizuri!

Electron ni hot cake lakini binafsi ningekushauri uangalie soft yako inataka nini..kwa haraka haraka
Kama ni security na related unaweza kwenda na python
Kama haina mambo mengi C# sasa
Kama unataka ya cross cutting-edge tembea na Rust

Kila la heri
 
Sababu kubwa inayo nisukuma kufanya iwe desktop app ni kwamba user wanataka watumie hata wakiwa offline


Kwahiyo naogopa hawa IT wao kuioopi na kuiuza wakati si hosted yaani iwe kama Adobe katika mfumo wa licence na iwe na ugumu kuimodify.


Nisipofanikisha hii nitapoteza wateja

MK254 Stefano Mtangoo Njunwa Wamavoko
 
Bado C# ni bora kwa app za desktop development.

Steps ni hizi:

1. Kama ni offline by default (lazima) utatumia sqlite database. (Kutumia MySql au Psql italazimisha user awe amesha installed database kwenye computer yake, alfu pia hii itampa user access ku browser data, pia installation process itakua complicated sio recommended kutumia Mysql au psql kwa offline uses)

2. Sio lazima user kuingia online mara moja kwa wiki au mwezi, unaweza ku set system i-detect akuwa online system ifanye data backup, update key au access token etc ambazo utatumia kutoa permission na authorisation. Pia ku zi save automatically kwenye sqlite database inayo run locally

3. C shap ni complicated kidogo sio rahisi ku reverse .exe file au user aone source code. Code system kwa C shap ukimaliza convert kwenda .exe file, tayari kwa installation (average programmer hasa wa sisi watanzania hamna mtu anaweza ku spend time ku reverse exe file, kwanza ni complicated sana)

====
Maoni binafsi: kwa nini offline, kama ni matumizi ya biashara huwa na prefer web based hata kama ita run kwenye locally (localhost kwenye moja ya server au computer ya mteja)
 
Sababu kubwa inayo nisukuma kufanya iwe desktop app ni kwamba user wanataka watumie hata wakiwa offline


Kwahiyo naogopa hawa IT wao kuioopi na kuiuza wakati si hosted yaani iwe kama Adobe katika mfumo wa licence na iwe na ugumu kuimodify.


Nisipofanikisha hii nitapoteza wateja

MK254 Stefano Mtangoo Njunwa Wamavoko

Nakazia kwa huyo mdau aliyekushauri C# maana ni vigumu sana kufanya reverse engineering kwente .exe ya C#
Electron ni nzuri kwenye kufanikisha mengi lakini niliichukia kwa namna ilivyo rahisi kwa mtu kufanya reverse engineering yake, na hili nililigundua kama nimechelewa sana, yaani kwa mwaka mzima natengeneza very powerful desktop based POS kwa kutumia ElectronJS, baadaye nakuja kugundua hauwezi kuilinda.

Nilijaribu kulinda code kwa kutumia .asar file lakini wapi, akija mzoefu anaifanyia reverse engineering tu.
Labda utumie md5 hash kwenye files kwamba mtu akizigusa tu, zinafanya self destruction.
 
2. Sio lazima user kuingia online mara moja kwa wiki au mwezi, unaweza ku set system i-detect akuwa online system ifanye data backup, update key au access token etc ambazo utatumia kutoa permission na authorisation. Pia ku zi save automatically kwenye sqlite database inayo run locally
Ahsante kwa point nzuri mkuu, lakini hapa ukifanya hivyo jamaa akaacha kuingia online mwaka mzima au hata miezi sita wakati naplani licence key check ifanyike kwa style hiyo kwa kuwa kuna wateja wanaweza kuwa wanalipia miezi mitatu, sita mpaka mwaka hapa unazungumziaje
 
Ahsante kwa point nzuri mkuu, lakini hapa ukifanya hivyo jamaa akaacha kuingia online mwaka mzima au hata miezi sita wakati naplani licence key check ifanyike kwa style hiyo kwa kuwa kuna wateja wanaweza kuwa wanalipia miezi mitatu, sita mpaka mwaka hapa unazungumziaje
Mhh, mfano windows au IDM kwa nini ukifika mda wa expired ukiwa offline hata miezi na miezi bado inakua expired?


Mbona ni simple tu, mfano user ana package ya mwenzi mmoja, 1/12 - 1/1, hapa unakua unafanya kazi na dates ikifika trh 1/1 system ina requred user aweke key mpya au system haifanyi kazi


Ku implement hii hautumii hata 100 line, unatengeneza fuction ya kucheki kama key bado ni valid una i- enable globally, kama sio valid code execution zinakua rejected au in fanya redirect kwenda ku subscription
 
Mhh, mfano windows au IDM kwa nini ukifika mda wa expired ukiwa offline hata miezi na miezi bado inakua expired?


Mbona ni simple tu, mfano user ana package ya mwenzi mmoja, 1/12 - 1/1, hapa unakua unafanya kazi na dates ikifika trh 1/1 system ina requred user aweke key mpya au system haifanyi kazi


Ku implement hii hautumii hata 100 line, unatengeneza fuction ya kucheki kama key bado ni valid una i- enable globally, kama sio valid code execution zinakua rejected au in fanya redirect kwenda ku subscription

Vipi je user akibadilisha computer date, kuna michezo mingi sana ya ku-bypass licenses, zamani enzi nikiwa hustler wa mjini nilikua na-crack deskop applications na kuziuza, nilikua na mbinu nyingi japo najua haziwezi kumudu kwenye mifumo ya kisasa.

Pia mleta mada nashauri tafuta "license management libraries for .NET", kuna libraries nyingi zinarahisisha shughuli yote.
 
Bado C# ni bora kwa app za desktop development.

Steps ni hizi:

1. Kama ni offline by default (lazima) utatumia sqlite database. (Kutumia MySql au Psql italazimisha user awe amesha installed database kwenye computer yake, alfu pia hii itampa user access ku browser data, pia installation process itakua complicated sio recommended kutumia Mysql au psql kwa offline uses)

2. Sio lazima user kuingia online mara moja kwa wiki au mwezi, unaweza ku set system i-detect akuwa online system ifanye data backup, update key au access token etc ambazo utatumia kutoa permission na authorisation. Pia ku zi save automatically kwenye sqlite database inayo run locally

3. C shap ni complicated kidogo sio rahisi ku reverse .exe file au user aone source code. Code system kwa C shap ukimaliza convert kwenda .exe file, tayari kwa installation (average programmer hasa wa sisi watanzania hamna mtu anaweza ku spend time ku reverse exe file, kwanza ni complicated sana)

====
Maoni binafsi: kwa nini offline, kama ni matumizi ya biashara huwa na prefer web based hata kama ita run kwenye locally (localhost kwenye moja ya server au computer ya mteja)
Nakazia Mkuu 💯💯
 
Vipi je user akibadilisha computer date,
Kweli, user anaweza ku backdate device.
Hapa system ifanye sync kwenye server user akiwa online sytem iverfy date.

Kama user hata ingia online na system ipo offline:

Fanya haya mfano:
1. Package ya mwezi, ni siku 30
2. Siku 30 ni sekunde 60 * 60 * 24 * 30

Kwa hivyo sytem inakua ina count seconds since day ilyo kuwa installed au user ume buy package

Japo hii ni complex, kwa maanaa lzm ujue namna nzuri ya ku calculate date na ku save user date change. Mfano user ame backdate, sytem iwe ina record kili date change na kufanya computation

kuna michezo mingi sana ya ku-bypass licenses, zamani enzi nikiwa hustler wa mjini nilikua na-crack deskop applications na kuziuza, nilikua na mbinu nyingi japo najua haziwezi kumudu kwenye mifumo ya kisasa.

Pia mleta mada nashauri tafuta "license management libraries for .NET", kuna libraries nyingi zinarahisisha shughuli yote.
Sema njia nzuri ni kufanya, kila login kwenye sytem ifanyike online. Yani kama user anataka ku login lazime awe online kwenye process ya ku login in background una verfy timestamp, Keys na information zote sensitive baada ya hayo yote kukamilika unatoa access token ya user ku proceed kwenye matumizi ya software
Sawa sawa
 
Kweli, user anaweza ku backdate device.
Hapa system ifanye sync kwenye server user akiwa online sytem iverfy date.

Kama user hata ingia online na system ipo offline:

Fanya haya mfano:
1. Package ya mwezi, ni siku 30
2. Siku 30 ni sekunde 60 * 60 * 24 * 30

Kwa hivyo sytem inakua ina count seconds since day ilyo kuwa installed au user ume buy package

Japo hii ni complex, kwa maanaa lzm ujue namna nzuri ya ku calculate date na ku save user date change. Mfano user ame backdate, sytem iwe ina record kili date change na kufanya computation


Sema njia nzuri ni kufanya, kila login kwenye sytem ifanyike online. Yani kama user anataka ku login lazime awe online kwenye process ya ku login in background una verfy timestamp, Keys na information zote sensitive baada ya hayo yote kukamilika unatoa access token ya user ku proceed kwenye matumizi ya software
im going with shap hii electron niiache kwanza najua itanichukua muda lakini nitakujaga hahapa kui release
 
Bado C# ni bora kwa app za desktop development.

Steps ni hizi:

1. Kama ni offline by default (lazima) utatumia sqlite database. (Kutumia MySql au Psql italazimisha user awe amesha installed database kwenye computer yake, alfu pia hii itampa user access ku browser data, pia installation process itakua complicated sio recommended kutumia Mysql au psql kwa offline uses)

2. Sio lazima user kuingia online mara moja kwa wiki au mwezi, unaweza ku set system i-detect akuwa online system ifanye data backup, update key au access token etc ambazo utatumia kutoa permission na authorisation. Pia ku zi save automatically kwenye sqlite database inayo run locally

3. C shap ni complicated kidogo sio rahisi ku reverse .exe file au user aone source code. Code system kwa C shap ukimaliza convert kwenda .exe file, tayari kwa installation (average programmer hasa wa sisi watanzania hamna mtu anaweza ku spend time ku reverse exe file, kwanza ni complicated sana)

====
Maoni binafsi: kwa nini offline, kama ni matumizi ya biashara huwa na prefer web based hata kama ita run kwenye locally (localhost kwenye moja ya server au computer ya mteja)
Programming language yoyote inayo compile kwenda Byte Code afu byte codes zika run kwenye virtual environment kama ilivo Java kwa JVM na C# kwa .NET Framework, bas jua hiyo unaweza decompile kirahisi kabisa ukasoma logic ya activation code.
Huu mchezo nimeufanya sana kwenye .jar file za Java na .exe files za C-Sharp.
C-Sharp ndo maisha ni marahisi kabisa Resharper tu peke yake ina decompile code, siku hizi Jetbrains wana hadi tool ya ku decompile code.

Zingatia mdau kasema anaenda kuuza software kwenye sehemu wana IT wao.



Namshauri mdau kama ata OPT for C# basi afanye kitu inaitwa Code Obfuscation, na nafikiri kuna free na paid softwares za kufanya hiki kitu.
Developers wengi wa android apps wanafanya Code ubfuscation kuzuia users wanaotaka ku develop competitive apps wasiweze kuelewa logic zao.

The only language nayojua hauwezi ku decompile bila kuwa advanced user unae elewa Assembly language ni programming language ambazo zina compile kwenda Machine code kama C++ au C.

Kwa C++ kuna framework kama Qt Framework au wxWidgets(unyama wa Stefano Mtangoo)

Kama haujawai kuwa passionate na C++ hizo frameworks za wxWidgets usiguse kabisa songa mbele na C#
 
Ahsante kwa point nzuri mkuu, lakini hapa ukifanya hivyo jamaa akaacha kuingia online mwaka mzima au hata miezi sita wakati naplani licence key check ifanyike kwa style hiyo kwa kuwa kuna wateja wanaweza kuwa wanalipia miezi mitatu, sita mpaka mwaka hapa unazungumziaje
1st approach ni ku distribute application kwa njia ya installer(application moja inaenda ina download application nyingine online na ku install), hii itafanya house keeping nyingi sana.
Unaweza kucheza na registry kwenye windows ukaandika baadhi ya taarifa(hakikisha kwenye registry taarifa utakzoziandika zisiwe na meaningful names).
Taarifa hizi zinaweza kukusaidia kujua user alilipia licence tarehe ipi,hata user aki backdate haitosaidia maana registry imesha record siku ambako application ilianza ku run.

all in all, hii michezo labda isikutane na watu wajanja, watalaam wanasemaga hakuna namna ya ku control application inayo run ndani ya PC ya mteja, anaweza kuifanyia chochote anachokitaka.
cha kuzingatia ni kupunguza tu idadi ya watu watakao cheza hii michezo.
 
Hapo ni balance kati ya security na convenience.

The more unavyojaribu kuifanya iwe secure dhidi ya kutamper na license yako, the more inavyokuwa inconvenient kwa valid user.

Kwanini usiiuze kwa bei/mfumo ambao mtu hatabugudhika kutamper bali ataona urahisi kulipia?

Ukitengeneza customer loyalty watakutafuta kwa lolote.

Au solve a difficult problem that is core to their business such that wakuhitaji.

Binafsi nna webbased software nimeinstall kwa wateja 50 ndani na nje ya nchi without any meaningful ip protection, wanaitegemea for their core daily operations na wanalipa periodically in the name of maintenance.

Case yako ikoje mkuu?
 
Hii itakuwa mara ya kwanza kuunda desktop app na nataka iwe na uwezo wa kudai licence key sitaki mambo mengi lakini nachotaka ni ushauri maana sikuwahi kuunda desktop app kwa maisha yangu yote.

Kinacho nifanya nifikie hatua hii nikwamba nataka user au mteja aitumie kwenye machine yake but ntakuwa natrack time then natuma kwenye server yangu kama muda wa leseni umeisha basi inaprompt kwa mteja kuweka key mpya ambazo atanunua online kutoka kwenye site yangu.

Huyu user atatakiwa kuwasha internet walau mara moja kwa wiki au mwezi ili app icheki validity ya leseni.

Sijui kama nimejieleza vizuri nataka kujua je nitumie solution ipi ? kumbuka sitaki user atumie app akiwa online muda wote isipokuwa siku hizo.

Tunazidiana maarifa naoma ushauri!
Umejiandaaje kwa hackers maana software za billgate ambazo ni fake zimejaa tele vipi umejiandaaje kuwazuia ma geneus wasipate free access?
Nakumbuka IDM fake watu wanepatch na kuwezesha kufanya unachotaka. Sasa kama wazungu wanaibiwa wewe mbongo huku kwa kina cihifu mangungo utaweza kuwazuia wazungu wasikuibie software yako kisha wa enjoy jasho lako ?
 
Umejiandaaje kwa hackers maana software za billgate ambazo ni fake zimejaa tele vipi umejiandaaje kuwazuia ma geneus wasipate free access?
Nakumbuka IDM fake watu wanepatch na kuwezesha kufanya unachotaka. Sasa kama wazungu wanaibiwa wewe mbongo huku kwa kina cihifu mangungo utaweza kuwazuia wazungu wasikuibie software yako kisha wa enjoy jasho lako ?

Hapa watatafuta solution, pia ni vizuri kutoa challenge kwenye wazo la mtu mwingine,

Comment za juu kila mtu ametoa solution yake, je yako ni ipi??
 
Hapa watatafuta solution, pia ni vizuri kutoa challenge kwenye wazo la mtu mwingine,

Comment za juu kila mtu ametoa solution yake, je yako ni ipi??
Yangu ni kumtafuta guru wa security kama hilo eneo bado hujawa master. Mlipe guru fanya sehemu yako afanye sehemu yake.
My doubt is kama tunaweza kupata window za billgate utafanya nini kuwazuia watu ambao kazi yao ni kuhack na kutumia vya wenzao.
Zingatia wazo la mdau hapo juu. Weka gharama ndogo ili hacker asishawishike maana haitamlipa.
Jambo lingine unda virus, mkuda yoyote atayefanya jaribio la kupata free access basi naye apate chake.
Hapa sina utaalamu kuwa kama ukiambatanisha virus je anaweza bypass antivirus ya user iwapo mtumiaji atakiuka licence. Sijajua vile vile kama inakubarika kisheria.
Wataalamu bobevu wanaweza changia hapa kama inakubarika na inawezekana.
 
Back
Top Bottom