Diskuze: Prodej desktop aplikace - trial verze
Člen
Zobrazeno 19 zpráv z 19.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Kolega to riešil tak ze napojil systém na Json na svojom webe ... kde hodil názov systému mení klienta a ci je povolený alebo zakázaný ...
Jo to zní i hezky, ale nevidím v tom nějak výhodu ani od té časově limitované kontrolující datum na internetu.
Je to prakticky webová služba na víc proti pár řádkům kódu které smažu a překompiluju.
Nicméně ve finále obojí spočívá v tom být připojený na internet a kontrolovat na něm něco.
Takové nejlepší řešení při poměru spolehlivost/jednoduchost je do aplikace zakomponovaat klíče, takže při spuštění si zjistí, jestli už byl vložen a pokud ano, zkontroluje si online jeho platnost a podle toho se spustí/nespustí. K tomu si udělat malej web v PHPku, kde bude databáze klíčů a jedna stránka, která v GET dostane klíč a vrátí true/false. Když si někdo aplikaci koupí, vložíš ručně do db nějaký klíč co sis vygeneroval mlácením do klávesnice a pošleš mu ho.
Ale pokud to je pro jednoho člověka a nebude o to zájem, tak si v aplikaci hned při spuštění zjisti čas z nějakého NTP serveru, ten není závislý na systémovém času a flákni tam jednu podmínku. Až ti zaplatí, tak to zakomentuješ a uděláš znova build, který mu pošleš. Řešení je to jednoduché, ale pokud hodláš aplikaci prodat více lidem, tak zvol spíše první cestu.
Jasné druhá možnost je právě jediné co mě napadlo pro individuální aplikaci, která není pro více zájemců. Očividně to asi bude jediné spolehlivé řešení no
Jediné určitě ne, ale nejjednodušší ano. Kdyby jsi sem napsal, co to má být za appku (web/dekstop/..., jazyk), tak bych určitě přišel na další věci.
Například u desktopu na win by jsi moh zapsat do registru datum prvního spuštění a po uplynutí pár dní by aplikace vyžadovala nějaký klíč (klidně i předdefinovaný v kódu), po jehož zadání by si do registrů zapsala, že už ho má a dál by fungovala. Je to podstatně složitější řešení, ale zase nemusíš klientovi posílat nový build aplikace, ale bude stačit pouze klíč.
Hnedka v nadpisu je, že jde o desktop A jinak C#,
Nicméně v tomhle řešení vidím, hnedka 2 problémy, které to jednoduché řešení přes aktuální čas nemá:
To ano, otázkou je, jak zdatnej je klient.
Taky může být v kódu předdefinovanej klíč i datum a do registrů (nebo
může i jinam) si to jenom zapíše, že už to má klíč.
Můžeš také měřit celkovou dobu, po kterou je aplikace spuštěna (nebo používána, pokud její používání znamená, že nad ní uživatel vyvíjí nějakou aktivitu) a použít tuto metriku jako jednu z indicií, že trial verze vypršela.
A jinak ty internetové metody, co tady zmiňují ostatní. Tvá aplikace by ale měla fungovat i bez internetového připojení (pokud jej nevyžaduje samotný její účel), protože stále neplatí, že internet je všude a že každý má mobilní data a chce je obětovat.
Víc je již jen o tom, jak moc dobrou ochranu chceš implementovat. Pokud třeba ty zápisy do registru uděláš moc jednoduše, tak není problém je vypozorovat (např. skrz Regmon či Process Monitor). Je to pak jen o tom, zda uživateli za to stojí tu aplikaci krást, ať už z jakéhokoliv důvodu.
Jo nad tím teď přemýšlím, že to se mi líbí asi nejvíc, že bude na hardcodované, že to bude fungovat do 20.listopadu a pak se musí zadat klíč, který může být klidně v textovým souboru vedle aplikace, to už je celkem jedno.
Zdatnost klienta těžko říct, jde hlavně o to, že vyvíjím malé záležitosti třeba na 14 dní pro někoho a rád bych měl způsob kterej si jednou udělám a pak už ho jen copy pastnu do každýho kódu a budu takříkajc relativně v bezpečí proti nezaplacení
To je přesne ten problém, že bez internetu mi to přijde hodně neošetřené, sám moc dobře vím jak jsem jako "malej" používal nějakou aplikaci za pár tisíc asi rok ve virtuálce a když vypršela vždy nahodil virtuálku ze zálohy a znovu dokola Zvlášť když jde o aplikace pro jednoho koncového uživatele, tak může být právě to jedno zaplacení nemilé
Ono tohle právě 100 % nevyřešíš. Můžeš dělat různé fígle, abys uživateli jeho ošklivé záměry ztížil; a to je asi tak všechno.
Je otázka, zda to nezkusit hnát také trochu právně, když to technicky 100 % nejde – prostě do licenční smlouvy napsat, jakým způsobem může být aplikace použita a případně ta omezení nějakým triviálnějším způsobem vynucovat. Když je ale uživatel obejde (a ty to máš šanci poznat například tak, že nekomunikuje, ale měl by žádat o novou verzi aplikace), můžeš zkusit začít vyhrožovat právními důsledky (zvláště, když se jedná o jednoho uživatele).
Jo nad tím teď přemýšlím, že to se mi líbí asi nejvíc, že bude na hardcodované, že to bude fungovat do 20.listopadu a pak se musí zadat klíč, který může být klidně v textovým souboru vedle aplikace, to už je celkem jedno.
Zdatný klient ti najde tyto hardcodované hodnoty a upraví si je tak, jak potřebuje. Jie pravda, že mu to můžeš stížit třeba tak, že budeš mít v aplikaci kód ověřující, zda někdo tvůj soubor nezměnil (popř. že některé části kódu nebyly změněny v paměti, protože obecně není třeba dělat změny na disku, stačí krátce po spuštění), ale tím problém pouze přesuneš na tento kód. A stejně to neřeší případy, kdy bys třeba chtěl, aby byla tvoje aplikacep oužívána pouze na jednom stroji.
Zrovna v případě C# není hardcodování úplně zoufalé řešení, protože když to vypustíš jako ClickOnce (výchozí instalátor od Visual Studia) a klíč bude přímo v kódu, nespustí se to, když se v tom někdo bude hrabat. ClickOnce si totiž hlídá integritu a pokud je porušena, prostě nepoběží.
Tak asi tedy zůstanu jen u toho času a podmínkou internetu pro účely testování a po zaplacení čistá kompilace s odstraněním tédle podmínky no
Tak takto jednoduché to opravdu není. To, aby nikdo nezačal používat aplikaci bez zaplacení, je snadné. Ale to, co je třeba zajistit je, aby se plně funkční aplikace dále nešířila a nevyužívali ji Ti, co ji zaplacenou nemají. Už to zde padlo, bezpodmínečně si utvoř licenční podmínky ať máš kontrolu nad nežádoucími úmysly ze strany uživatele. Nabízí se několik otázek. Vyžaduje aplikace připojení k internetu či nikoli? Jakým způsobem so dozvíš, že uživatel za aplikaci zaplatil, kde se co změní? A zásadní věc, jakým způsobem sdělíš a zpřístupníš všechny dostupné možnosti aplikace uživateli? Každopádně základem je kooperace klíčů, modifikace a vytváření virtuálních souborů a využívání časových funkcí.
Jak už jsem řekl, jedná se o individuální aplikace pro individuální lidi, takže bych moc neměl strach z nějakého šíření 99,9% lidí by pro to nikdy nenašlo žádné využití. Systém klíčů pro aplikaci pro jednoho cílového uživatele mi přijde celkem zbytečný
Zobrazeno 19 zpráv z 19.