How to create a demo with time limit?  (timebomb)

Hello,
I would like to create a demo of a game I made but want to limit the amount of time it will run once installed.  (30 days).
Is there an xtra or a straightforward way to do this in lingo?

there is no straightforward way to do it in any programming language. I'm currently developing a Director-specific trial version solution, but it's not ready yet for general/commercial use. Are you looking for a free solution or are you willing to pay?
Trial Versions are used so users can try out your software and then buy it if the software is something they want. So, there are two parts to trial software;
1. the code that handles the trial version
2. the code that handles the product serial and registration/licence keys
The code that handles the trial version needs to be able to do these things:
1. Keep track of the trial period. This involves recording the first run date/time and incrementing that date/time when the software is launched each subsequent time and comparing that against the trial period.
2. Protect against backdating - turning back the computer clock to get more trial time.
3. Protect against uninstall/reinstall.
Dealing with all three of these issues becomes complicated; let's look at a solution using a licence file. What about a licence file will solve all the issues listed above?
1. The licence file will contain the First Run Date (FRD), the Last Run Date (LRD), and other specific user and product info.
2. A licence file should be encrypted to ensure it cannot be tampered with.
3. A licence file should be moved to the user's AppData (or equivalent) folder by the installer software (such as NSIS). This ensures the first run date is only ever recorded once... what do I mean by this? If your app had to check first before opening and writing to the license file, then someone could easily circumvent the trial version by deleting the file at which point your application would be forced to move/write the licence file again and the user would be able to start the trial over again. Well, the installer only ever runs once. So, if it copies over the licence file during the installation process then our application, when it runs the first time, only has to check if the file is there; if not then the trial has been tampered with, if it's there then read the FRD, and if blank then we can be sure it's writing the FRD for the first and only time.
4. The file could be hidden to ensure that an un/reinstallation of your software wouldn't circumvent your trial security. Another method is to write to the registry some entry that's obscure or looks like some other info for your software... this is what's called security by obscurity which is frowned upon in the industry, in general, but there's really no way around it in the case of trial software methods.
5. A licence file can be used as a red-herring if you want to use an obscure/hidden registry entry to save the real trial version information. If that's the case, you should follow the same steps as above and have your installer write the initial registry entries so it cannot be as easily circumvented by your code checks.
Encryption is a big part of trial version security. If you're using MX2004 or above then you can find javascript ports of some strong encryption algorithms such as AES or RSA. RSA is an asymmetrical (ie public/private key) encryption algorithm whereas AES is a symmetrical (ie. private key) algorithm. The important things to look for in an implementation are ones that will encrypt a variable length string. These implementations use modes to encrypt fixed length chunks of the string, thus making the core encryption algorithm useful in practical situations such as encrypting variable length strings.
Creating a trial/registration .dir file (trial window) that gets published with the main application .dir file:
Below, I've outlined these steps so you can see what I mean. I've tested this process and it's solid, AFAIK. Here are the steps:
1. Create a project and name it movie1. Add a framescript with the 'go the frame' code on it.
2. Add a label named 'continue' on the frame just after the 'go the frame' framescript.
3. Add a button, and this code:
go to frame "continue"
4. Now, go into the Publish Settings options and go to the 'Files' tab and add any of your other .dir files you want under the 'Additional Files:' heading (the option to Play every movie in list will be checkmarked by default. Leave it like that).
5. Now, Publish your project and you will have ONE .exe called movie1.exe which contains two .dir files that have been published.
6. Open your User Temp folder and observe the folder that's created when you run movie1.exe... no temp .dir file is created when you run movie1.exe
7. Creating another .dir with this code:
go to frame "continue" of movie("movie1")
...does not work as it's looking for a .dir or .dxr or .dcr and will not work with an .exe.
What this means is you can create a single executable that runs the trial window with all your trial version code and if everything checks out in the licence file then you can go to the main application movie. The trial window can be used to display the trial information, including a registration section, if you like. Google examples of trial version software to get ideas of what should be included in a trial version display.
Resources:
AES encryption written in Javascript: http://www.movable-type.co.uk/scripts/aes.html
DOUG Article I wrote on creating product keys: http://director-online.com/forums/read.php?2,22279,22303#msg-22303
Block Cipher Modes: http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29
AES - Wikipedia: http://en.wikipedia.org/wiki/Advanced_Encryption_Standard
RSA - http://en.wikipedia.org/wiki/RSA
Pseudocode for recording and comparing dates
FRD = First Run Date
LRD = Last Run Date -- this one would get updated every time the app was run.
CRD = the systemDate
NumDays = 30 -- the number of days for trial version
dateGood = False
If LRD > CRD Then
-- the system clock was rolled back
dateGood = False
Else If (the systemDate) > (NumDays + FRD) Then
-- trial version has expired
dateGood = False
Else If CRD > LRD Then
-- everything is ok, so write a new LRD date in registry or wherever else
dateGood = True
Else If CRD = (_movie.systemDate) Then
-- the dates are both good
dateGood = True
Else
dateGood = False
End If
Typical Place to Write Application data to the Registry:
HKCU\Software\<AppName>\<version>\
eg. HKCU\Software\TRiShield\1.0\

Similar Messages

  • How to create a GregorianCalendar with timezone information

    Hello All,
    Can any one tell me how to create a GregorianCalendar with time zone information i.e
    I have following information with me
    year
    month
    day
    hour
    minutes
    seconds
    deci-seconds
    direction from UTC "+" / "-" (in ascii notation)
    hours from UTC minutes from UTC
    How can i construct a calender out of it?

    How to construct a calendar:
    Calendar.getInstance()
    Did you consider looking at the API docs with the set() method for calendar and the field constants for the values you can set?
    Although I wonder whether it's simpler to just concatenate the data to a String and parse it to a Date instance using SimpleDateFormat.

  • How to create a wiki with iWeb ?

    Hi !
    Any idea about how to create a wiki with iWeb ?
    I want to make a school web page but, instead of doing it myself, I thought it would be more interesting to make every student contribute - that's the point of making a wiki ! Could anyone help me ?
    Many thanks !
    Cheers.
    Chris.

    I know Apple's tools are VERY compelling and tremendously cool to use, but, given the collaborative nature of this endeavor, you may want to look at some internet enabled tools that, by their nature, allow many users to update the content from anywhere.
    Currently, if you're editing a page in iWeb, the information for that site is kept in the domain.sites folder. For several people editing the site, you would have to shuttle this file back and forth between all the users. If user A is currently editing the site, user B would have to wait until they're finished to get the file. If user A wants to make some changes, they'd have to wait until user B sends the file back to them and we haven't even got to the point of letting user C, D, or E have access to the content in order to make updates!! Add everyone else in the school and you would have to make sure this one file makes it across tens of computers without becoming corrupted and making sure that only one person is making changes at a time. This would limit the number of updates that can be handled on a regular basis (what if user M gets ill before handing it off to user N, now NO one can make updates until user M remembers where they left the content... if they didn't erase it).
    However, if you're willing to severely limit the scope of what a wiki is, then you can get input from everyone and enter it with just a few users that have access to edit the content.

  • How to create a table with varied number of columns?

    I am trying to create a balance table. The colunms should include years between the start year and end year the user will input at run time. The rows will be the customers with outstanding balance in those years.
    If the user input years 2000 and 2002, the table should have columns 2000, 2001, 2002. But if the user input 2000 and 2001, the table will only have columns 2000 and 2001.
    Can I do it? How? Thanka a lot.

    Why did you create a new thread for this?
    How to create a table with varied number of columns?

  • I'm debutante in oracle 10g how to create a database with picture?

    I'm debutante in oracle 10g how to create a database with picture? help please

    d7401ec1-d4d6-4e54-9eb4-2181ac367d0c wrote:
    I'm debutante in oracle 10g how to create a database with picture? help please
    Oracle 10g is obsolete.  Oracle 11g is already at terminal release.
    Have you installed the Oracle rdbms software?
    Installing Oracle and Building the Database
    If you are going to be a professional DBA, you need to learn to
    1) read the documentation
    2) wean yourself from dependence on pictures and GUIs.
    3) read the documentation
    =================================================
    Learning how to look things up in the documentation is time well spent investing in your career.  To that end, you should drop everything else you are doing and do the following:
    Go to  docs.oracle.com.
    Locate the link for your Oracle product and version, and click on it.
    You are now at the entire documentation set for your selected Oracle product and version.
    BOOKMARK THAT LOCATION
    Spend a few minutes just getting familiar with what is available here. Take special note of the "books" and "search" tabs. Under the "books" tab (for 10.x) or the "Master Book List" link (for 11.x) you will find the complete documentation library.
    Spend a few minutes just getting familiar with what kind of documentation is available there by simply browsing the titles under the "Books" tab.
    Open the Reference Manual and spend a few minutes looking through the table of contents to get familiar with what kind of information is available there.
    Do the same with the SQL Reference Manual.
    Do the same with the Utilities manual.
    You don't have to read the above in depth.  They are reference manuals.  Just get familiar with what is there to be referenced. Ninety percent of the questions asked on this forum can be answered in less than 5 minutes by simply searching one of the above manuals.
    Then set yourself a plan to dig deeper.
    - *Read a chapter a day from the Concepts Manual*.
    - Take a look in your alert log.  One of the first things listed at startup is the initialization parms with non-default values. Read up on each one of them (listed in your alert log) in the Reference Manual.
    - Take a look at your listener.ora, tnsnames.ora, and sqlnet.ora files. Go to the Network Administrators manual and read up on everything you see in those files.
    - *When you have finished reading the Concepts Manual, do it again*.
    Give a man a fish and he eats for a day. Teach a man to fish and he eats for a lifetime.
    =================================

  • How to create one portlet with more apps

    Hi,
    How to create 10 application with one portlet on OC4J? Anybody has experience? Care to share with me.
    Thank you.

    Hi
    If you are writing application logic using JPDK or PDK, you can implement the logic/code for 1 application or 100 applications/functionality in one portlet.
    Where as if you have per application you have 1 portlet you can have modularity, can be added to Portal page's portlet region where ever you want to.portlet provider(Web provider or Pl/sql provider) can contain multiple portlets.
    If you go with 100 applications rendering in one portlet you need to implement 100 applications logic/code in 1 portlet, you can parameterize the portelt to show which applications can be shown at run time, for this you need to implement parameterization logic in portlet code. I can say this approach is cumbersome
    Thanks
    Seshagiri.Rayala
    http://soabpel.wordpress.com/

  • How to create a node with attributes at runtime in webdynpro for ABAP?

    Hi Experts,
             How to create a node with attributes at runtime in webdynpro for ABAP? What classes or interfaces I should use? Please provide some sample code.
    I have checked IF_WD_CONTEXT_NODE_INFO and there is ADD_NEW_CHILD_NODE method. But this is not creating any node. I this this creates only a "node info" object.
    I even check IF_WD_CONTEXT_NODE but i could not find any method that creates a node with attribute.
    Please help!
    Thanks
    Gopal

    Hi
       I am getting the following error while creating a dynamic context node with 2 attributes. Please help me resolve this problem.
    Note
    The following error text was processed in the system PET : Line types of an internal table and a work area not compatible.
    The error occurred on the application server FMSAP995_PET_02 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Method: IF_WD_CONTEXT_NODE~GET_STATIC_ATTRIBUTES_TABLE of program CL_WDR_CONTEXT_NODE_VAL=======CP
    Method: GET_REF_TO_TABLE of program CL_SALV_WD_DATA_TABLE=========CP
    Method: EXECUTE of program CL_SALV_WD_SERVICE_MANAGER====CP
    Method: APPLY_SERVICES of program CL_SALV_BS_RESULT_DATA_TABLE==CP
    Method: REFRESH of program CL_SALV_BS_RESULT_DATA_TABLE==CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE_DATA of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMP_TABLE_DATA~UPDATE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_VIEW~MODIFY of program CL_SALV_WD_C_TABLE_V_TABLE====CP
    Method: IF_SALV_WD_COMPONENT~VIEW_MODIFY of program CL_SALV_WD_A_COMPONENT========CP
    My code is like the following:
    TYPES: BEGIN OF t_type,
                CARRID TYPE sflight-carrid,
                CONNID TYPE sflight-connid,
             END OF t_type.
      Data:  i_struc type table of t_type,
      dyn_node   type ref to if_wd_context_node,
      rootnode_info   type ref to if_wd_context_node_info,
      i_node_att type wdr_context_attr_info_map,
      wa_node_att type line of wdr_context_attr_info_map.
          wa_node_att-name = 'CARRID'.
          wa_node_att-TYPE_NAME = 'SFLIGHT-CARRID'.
          insert wa_node_att into table i_node_att.
          wa_node_att-name = 'CONNID'.
          wa_node_att-TYPE_NAME = 'SFLIGHT-CONNID'.
          insert wa_node_att into table i_node_att.
    clear i_struc. refresh i_struc.
      select carrid connid into corresponding fields of table i_struc from sflight where carrid = 'AA'.
    rootnode_info = wd_context->get_node_info( ).
    rootnode_info->add_new_child_node( name = 'DYNFLIGHT'
                                       attributes = i_node_att
                                       is_multiple = abap_true ).
    dyn_node = wd_context->get_child_node( 'DYNFLIGHT' ).
    dyn_node->bind_table( i_struc ).
    l_ref_interfacecontroller->set_data( dyn_node ).
    I am trying to create a new node. That is
    CONTEXT
    - DYNFLIGHT
    CARRID
    CONNID
    As you see above I am trying to create 'DYNFLIGHT' along with the 2 attributes which are inside this node. The structure of the node that is, no.of attributes may vary based on some condition. Thats why I am trying to create a node dynamically.
    Also I cannot define the structure in the ABAP dictionary because it changes based on condition
    Message was edited by: gopalkrishna baliga

  • How to create excise invoice with reference thorugh credit memo

    Hi All,
    Please provide any solution for the following qurey:
    How to create excise invoice with reference thorugh credit memo

    Hi murali,
    i am unable to understand your requirement i think there is no like this scenario requirement for any client
    if any requirement is there kindly explain detail
    cheers

  • How to create a complaint with pre-decessor document Inovice?

    Hello experts,
    I need create a complaint with reference to a pre-decessor document type Invoice (apart from other types such as sales order and service order). Can someone enlighten me
    1) how to create an invoice in IC Web Client and backend?
    2) how to create a complaint with reference to this created invoice in IC Web client and backend?
    Thanks a lot!!!

    Hi Easwar
    Thanks  a lot for answering the question.
    Yes I do have CRM Billing documents. But the problem is
    a) either the billing document doesn't have Transfer to Accounting status Transferred or
    b) a transferred billing document, but all items have error "Unable to offset billing item 90003458 0000000060" etc.
    Do you know
    1) how I can make a billing document have "Transferred" status? Pressing "Transfer to Accounting" button in the billing document overview page will only set the status to "Being transferred". And it's always being tranfered.
    2) What does the error "Unable to offset billing item ... "mean? How to get rid of them?
    Thanks a lot!

  • How to create a table with events in smartforms?

    How to create a table with events view in smartforms?
    It doesn't like general table with header, main area and footer.
    for example:
    in smartforms: LE_SHP_DELNOTE
    table name is TABLEITEM(Delivery items table)

    Vel wrote:
    I am creating XML file using DBMS_XMLGEN package. This XML file will contain data from two different database tables. So I am creating temporary table in the PL/SQL procedure to have the data from these different tables in a single temporary table.
    Please find the below Dynamic SQL statements that i'm using for create the temp table and inserting the data into it.
    Before insert the V_NAME filed, i will be appending a VARCHAR field to the original data.
    EXECUTE IMMEDIATE 'CREATE TABLE TEMP_TABLE (UNIQUE_KEY NUMBER , FILE_NAME VARCHAR2(1000), LAST_DATE DATE)';
    EXECUTE IMMEDIATE 'INSERT INTO TEMP_TABLE values (SEQUENCE.nextval,:1,:2)' USING V_NAME,vLastDate;What exactly i need is to eliminate the INSERT portion of it,Since i have to insert more 90,000 rows into it. Is there way to have the temp table created with data in it along with the sequence value as well.
    I'm using Oracle 10.2.0.4 version.
    Edited by: 903948 on Dec 22, 2011 10:58 PMWhat you need to do to eliminate the INSERT statement is to -- as already suggested by others - eliminate the temporary table. You don't need it. It is just necessary overhead. Please explain why you (apparently) believe that the suggestion of a view will not meet your requirements.

  • How to create shipment document with out inbound delivery document

    Dear Friends
    How to create shipment document with out outbound/inbound delivery document.
    In my client scenario, there is no inbound delivery for normal purchases.
    Just there are raising the PO to vendor, then they are doing MIGO for goods receipt.
    Can we do shipment creation with reference to PO?
    If it is possible, how it will be?
    Please let it solve
    With regards
    Lakshmikanth

    Dear Sameer,
    Please go to transaction VT01N here you enter Transportation planning point and shipment type then press enter.
    Now system will take you to the shipment document creation screen here you click on Select deliveries or press F6 now system will take you to the select outbound deliveries screen in this screen you enter selection data then execute, now deliveries will get assigned to that shipment.
    After assigning the deliveries enter the remaining data then complete the shipment finally save the shipment document.
    For more information please go through this SAP help link
    Note:- Shipment process need to be carry out for the deliveries before PGI.
    http://help.sap.com/saphelp_47x200/helpdata/en/f5/04898047bd11d2bf750000e8a7386f/frameset.htm
    I hope this will help you,
    Regards,
    Murali.

  • How to create a table with datatype blob and insert a pdf file (ravi)

    how to create a table with datatype blob and insert a pdf file,
    give me the explain asap
    1.create the table?
    2.insert the pdffiles into tables?
    3.how to view the files?
    Thanks & Regards
    ravikumar.k
    Edited by: 895044 on Dec 5, 2011 2:55 AM

    895044 wrote:
    how to create a table with datatype blob and insert a pdf file,
    give me the explain asapPerhaps you should read...
    {message:id=9360002}
    especially point 2.
    We're not just sitting here waiting to answer your question as quickly as possible for you.

  • I need your expert opinion on how to create a map with multiple conditions.

    Hello.
    I need your expert opinion on how to create a map with multiple conditions.
    I have a procedure (which i cannot import or re-create in OWB due to the bug), so i am trying to create a map instead :-(
    How can i create a cursors within the map?
    My function creates table and cursor.
    Then it will have to check for duplicates in the tables (the one created and another table) - the criteria for finding duplicates is a number of fields.I then need to place few different conditions (if some attributes are not available) and it has to load cursor based on this conditions. The next step is to fetch the data into the cursor based on what attributes are missing.
    The next thing it will do is insert the data into table (if record doesn't exist), output the error in separate table is record is corrupted, or update the record with changed information.
    In short i need to re-create match / merge but with conditions, iterations etc 'built into' it.
    I can read up on available functions - it's just what would be the best options? and what would be the best approach to do so?
    In my function i use %rowtype - but cannot use it in owb - so what would be the alternative? i don't really want to create a lot of variables and then have a nightmare of maintaing it. are there any tips regarding this?
    having looked through Oracle dedupe - it's not really what i need because it is just DISTINCT.
    I would appreciate any help / advise on this.
    Thank you very much

    thanks a lot for your reply - i will look into this option :-)
    it is a bit more complicated now as i have to re-create the match / merge and then somehow 'tweak' it to achieve the result i need.
    At the moment i am looking to breakdown the package into smaller chunks 'functions' and try creating the map that way.
    Anyway, thank you very much for your suggestion.

  • How to Create Business Partner with  fix number in t-code :BP

    Dear SIr,
    Normally I will set number range for auto  to create Business Partner. In case , If we would like to crea How to Create Business Partner with  fix number in t-code :BP , howe to do?
    Please kindly advise.
    THnak you and best regards,
    Vimol

    Dear Shobhit,
    How to put the thread as you mentioned.
    Best regards,

  • How to validate a date with time

    Hi All,
    How can I validate date with time?
    Here is my code:
    var tempDate:Date = new Date();
    if (tempDate < '09/18/2012 7:30:00 AM'){
         doSomething
    Thanks in advanced

    I think i got it to work.
    var tempDate:Date = new Date();
    var oldDate:Date = new Date('09/18/2012 7:30:00 AM');
    if ( Number(tempDate) < Number(oldDate) ){
         doSomething
    Best,

Maybe you are looking for

  • Multiple Page in Smartforms

    Hi, I create one Z-Smartforms in this form i passing Internal table (ITAB - Customer Details). I want to print each customer details in each new page. But the format of page is same. I was try LOOP in the Smartforms Page window, but that not working.

  • Delete key function reset required

    The delete key in Safari always returned to the previous page browsed. Now, for some reason, it only functions as a regular delete key and no longer moves back a page. This happened for, seemingly, no reason, I didn't reset anything. Any ideas how to

  • Running function mdule CUSTOMER_UPDATE

    I am running Function Module CUSTOMER_UPDATE to update the payment block field in the customer master. I am populating the following fields in the FM; KUNNR BUKRS ZAHLS I leave the other fields blank. But when I run the FM, it removes the values from

  • Performance Assistant Long text Corrupt in NW04s BI

    Hi all, after installing SAP Netweaver 2004s SP08, I have experienced problems in displaying message longtexts. in all the place One example for the characters that get displayed instead of the correct longtext: This is Unicode code BI ABAP + JAVA sy

  • Burning a cd on mac that can be read on a windows pc

    I have tried burning corel draw files on my mac os panther to be viewed on a windows pc.When disc is inserted into a windows pc it cannot read the disc. Can anyone offer advice.