Alpha Software Mobile Development Tools:   Alpha Anywhere    |   Alpha TransForm subscribe to our YouTube Channel  Follow Us on LinkedIn  Follow Us on Twitter  Follow Us on Facebook

Announcement

Collapse

The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic


Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.


If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.


Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.



Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

runtime license

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #16
    Re: runtime license

    Originally posted by Selwyn Rabins View Post
    yes, true, but a marginally skilled developer would put code in his autoexec that said that if the startup.control file was missing then the application cannot start :):)

    and as Richard points out, the activation requirement has been removed (as of the next update)
    That is true, but you had better add the if a5_is_runtime()
    to your autoexec or removing the startup.control file from the a5v9 run engine directory will cause the developer edition to close as well.

    if a5_is_runtime()=.t. then
    if a5_check_throttle_file() = .f. then
    a5.close()
    But, I think an equally important issue is to have the control file in the application directory rather than the program directory to avoid having to copy the control file to each of 15-20 workstations (or more). Also, the license number (if within the control file) will be encrypted which I think would prevent a user (client) from taking the installation of the unlimited run engine and using it wherever wanted.

    Comment


      #17
      Re: runtime license

      Originally posted by John Lemisch View Post
      That is true, but you had better add the if a5_is_runtime()
      to your autoexec or removing the startup.control file from the a5v9 run engine directory will cause the developer edition to close as well.

      if a5_is_runtime()=.t. then
      if a5_check_throttle_file() = .f. then
      a5.close()
      But, I think an equally important issue is to have the control file in the application directory rather than the program directory to avoid having to copy the control file to each of 15-20 workstations (or more). Also, the license number (if within the control file) will be encrypted which I think would prevent a user (client) from taking the installation of the unlimited run engine and using it wherever wanted.
      when a5 starts up, at the time the startup.control file is read, the application has not been loaded and a5 therefore has no idea what the application folder is, or will be. so it is not possible to put the startup.control file in the application folder.

      Comment


        #18
        Re: runtime license

        Originally posted by Selwyn Rabins View Post
        when a5 starts up, at the time the startup.control file is read, the application has not been loaded and a5 therefore has no idea what the application folder is, or will be. so it is not possible to put the startup.control file in the application folder.
        Selwyn: thanks. So we have to copy to control file to each and every work station...that's a shame, but if it has to be, it has to be. What about the license number issue? Would it be possible to store the license number within the control file?

        Comment


          #19
          Re: runtime license

          Just a thought... what about putting a small check in the autoexec to check if the COPY of a startup.control file in the apps directory is the same as the one in the Alpha directory. This would always make sure that things don't get switched behind you and would allow for a simple way to distribute the new file to each workstation. As they log in, it would get updated.

          Comment


            #20
            Re: runtime license

            Originally posted by Ed Barley View Post
            Has anyone used this approach, where you place the "license.key" file into the "C:\Program Files\a5v9 Runtime" directory?

            I am just getting around to using the V9 Runtime, and this approach for Runtime to access the license number does not seem to function. I still get the dialog box asking for the license number. Using Windows XP.

            Ed
            When building the install, you have to remember to include the file in the list of additional files to install, at least that did the trick for us.

            Comment


              #21
              Re: runtime license

              As far as I can tell, (And I can't tell that far) The only way to throttle the user count is to create the startup.control file and place it in the Run Engine installation directory.

              This allows you to limit the amount of users that can access the data files of Alpha applications.

              This does not make sense to me. Shouldn't this file be placed in the root of the application directory?

              If I create an app for a client and I sell them a 10 User license, I put the 10 user startup.control in the Run Engine install directory. If I or another developer then sells the client a 20 user license to a different application, the startup.control file will change to a 20 user license. Then the client now has a 20 user license for my 10 user application.

              Now I understand that we can create a different name for the startup.control, but what if a different developer uses the same startup.control filename as I do.

              If the startup.control file was placed in the app directory this would not be an issue and would allow the developer to sell different license counts for different apps.

              Any thoughts?
              __________________
              [/SIGPIC]
              ---------------------------------------------------
              Barry Kucher
              http://www.411tech.org

              This was posted in the wish list forum some time ago. We do have situations where we have more than one application within a client's company. If we sell the application by number of users, those who should be limited to say 10 users, would no longer be limited if the other application is sold as 20 users? Is this correct?

              Comment


                #22
                Re: runtime license

                Originally posted by John Lemisch View Post
                As far as I can tell, (And I can't tell that far) The only way to throttle the user count is to create the startup.control file and place it in the Run Engine installation directory.

                This allows you to limit the amount of users that can access the data files of Alpha applications.

                This does not make sense to me. Shouldn't this file be placed in the root of the application directory?

                If I create an app for a client and I sell them a 10 User license, I put the 10 user startup.control in the Run Engine install directory. If I or another developer then sells the client a 20 user license to a different application, the startup.control file will change to a 20 user license. Then the client now has a 20 user license for my 10 user application.

                Now I understand that we can create a different name for the startup.control, but what if a different developer uses the same startup.control filename as I do.

                If the startup.control file was placed in the app directory this would not be an issue and would allow the developer to sell different license counts for different apps.

                Any thoughts?
                __________________
                [/SIGPIC]
                ---------------------------------------------------
                Barry Kucher
                http://www.411tech.org

                This was posted in the wish list forum some time ago. We do have situations where we have more than one application within a client's company. If we sell the application by number of users, those who should be limited to say 10 users, would no longer be limited if the other application is sold as 20 users? Is this correct?
                if you want to have a run engine on a user's machine and then run multiple different applications using the run engine and control how many users can concurrently use each app, then the new 'throttle' feature of the run engine is NOT the solution.

                the solution is to use techniques that a5 users have been using for years now - put logic into your application that codes your own control.

                the run engine throttle was designed to throttle the number of users of the run engine. it was designed to solve one problem only - which is this:

                a user bought a 10 user runtime, but for some customers he wants a a 3 user runtime. rather than making the user buy a 10 user and a 3 user runtime, we let them turn their 10 user runtime into a 3 user runtime by including the throttle logic file in the runtime program folder.

                that's the problem that the throttle feature was intentded to sove and that's the problem that it does solve. to repeat: it is not designed to throttle user count at the application level - that's a problem easily solved with custom xbasic in your individual applications.

                Comment


                  #23
                  Re: runtime license

                  John.

                  My 20 user v7 runtime with app is sold as a 1 user, 5 user, 10 user, etc and it is all done with xbasic at the app level. I think that is what Selwynn is talking about.

                  So I understand, We can throttle a machine to whatever we want, but a seperate machine could have a different throttle number in v9?

                  .
                  Dave Mason
                  [email protected]
                  Skype is dave.mason46

                  Comment


                    #24
                    Re: runtime license

                    Dave,
                    Can you tell me what method you use to accomplish the restriction?
                    A table that you identify that they've logged in and count them that way, something else?
                    I think if the problem can be solved easily with some code, then everyone should be happy, at least it would make sense to me.
                    Alan

                    Comment


                      #25
                      Re: runtime license

                      I have given this in a prior thread somewhere, but cannot find it. I send demo disks out with v7 and make a few sales. I have to do 2 things and want it changeable quickly and without fuss.

                      I include 2 files. One has a date to expire and the other has a user count. They are both text files disguised as a jpg and a dll. One could also put them in the registry or hide them in an encrypted table. There are other ways too, like just hard coding them and simply replacing the db files. edit: could be put in a sql table too.

                      Here is the code to accomplish.

                      Code:
                       
                      cpath = a5.Get_Path()
                      cmast = a5.GET_MASTER_PATh()
                      regusers = a5_registration_license_inuse(cmast+"\sales.muf") ' main prog
                      runtimeusers = a5_registration_license_inuse(cmast+"\sales.rmuf") ' runtime muf
                      totalusers = runtimeusers+regusers+1 'so they don't error out with one extra
                       
                       
                      if file.exists(cpath+"\a_rbitrate.dll") then
                       fileis = FILE.open(cpath+"\a_rbitrate.dll",FILE_RO_SHARED)
                       numuse = trim(fileis.read_line())
                       numuser = str(numuse,2,0)
                       numberusernow = val(numuser)
                      else
                       UI_MSG_BOX("Bad Start","You are mssing a required file(s) to run UpsLog.  Call 352-302-2015",UI_OK) 
                       sleep(5)
                       a5.Close() 
                      end if
                      if file.exists(cpath+"\Stylesheet Bitmaps\grayyy.jpg") then
                      thisis = FILE.OPEN(cpath+"\Stylesheet Bitmaps\grayyy.jpg",FILE_RW_EXCLUSIVE)
                      getdate = thisis.READ_LINE()
                      thedate = ctod(alltrim(getdate))
                      dayslefttorun = thedate-date()
                      select
                      case thedate-date()=10
                        UI_MSG_BOX("Time is up for demo","Your time for evaluation expires in 10 days.  Call 352-302-2015",UI_OK)
                       case thedate-date()=9
                        UI_MSG_BOX("Time is up for demo","Your time for evaluation expires in 9 days.  Call 352-302-2015",UI_OK)
                       case thedate-date()=8
                        UI_MSG_BOX("Time is up for demo","Your time for evaluation expires in 8 days.  Call 352-302-2015",UI_OK)
                       case thedate-date()=7
                        UI_MSG_BOX("Time is up for demo","Your time for evaluation expires in 7 days.  Call 352-302-2015",UI_OK)
                       case thedate-date()=6
                        UI_MSG_BOX("Time is up for demo","Your time for evaluation expires in 6 days.  Call 352-302-2015",UI_OK)
                       case thedate-date()=5
                        UI_MSG_BOX("Time is up for demo","Your time for evaluation expires in 5 days.  Call 352-302-2015",UI_OK)
                       case thedate-date()=4
                        UI_MSG_BOX("Time is up for demo","Your time for evaluation expires in 4 days.  Call 352-302-2015",UI_OK)
                       case thedate-date()=3
                        UI_MSG_BOX("Time is up for demo","Your time for evaluation expires in 3 days.  Call 352-302-2015",UI_OK)
                       case thedate-date()=2
                        UI_MSG_BOX("Time is up for demo","Your time for evaluation expires in 2 days.  Call 352-302-2015",UI_OK)
                       case thedate-date()=1
                        UI_MSG_BOX("Time is up for demo","Your time for evaluation expires in 1 day.  Call 352-302-2015",UI_OK)
                       case thedate-DATE()<=0
                        UI_MSG_BOX("Time is up for demo","Your time for evaluation has expired!  UpsLog will terminate in 20 seconds  Call 352-302-2015",UI_OK)
                        sleep(5)
                        a5.close()
                      end select    
                      else
                        UI_MSG_BOX("You may have a bad install! - Closing!","Call 352-302-2015 for help",UI_OK)
                        sleep(5)
                        a5.close()
                      end if
                      if totalusers > numberusernow then
                        UI_MSG_BOX("User Count","Your User count has been exceeded!  UpsLog will terminate in 5 seconds  Call 352-302-2015",UI_OK)
                        sleep(5)
                        a5.close()
                      end if
                      It is real simple to do.

                      Hope it helps.

                      .
                      Last edited by DaveM; 08-25-2008, 08:07 PM.
                      Dave Mason
                      [email protected]
                      Skype is dave.mason46

                      Comment


                        #26
                        Re: runtime license

                        Thanks for the information.
                        Looks pretty easy to accomplish.
                        Alan

                        Comment


                          #27
                          Re: runtime license

                          Originally posted by DaveM View Post
                          regusers = a5_registration_license_inuse(cmast+"\sales.muf") ' main prog
                          runtimeusers = a5_registration_license_inuse(cmast+"\sales.rmuf") ' runtime muf
                          totalusers = runtimeusers+regusers+1 'so they don't error out with one extra
                          This won't work the way it logically should.

                          If you run this from the full version, the "runtimeusers" will ALWAYS be 0.
                          If you run this from the runtime version, the "regusers" will ALWAYS be 0.
                          Therefore, the totalusers will only be equal to whichever version you are currently in. (+1 of course)

                          Apparently this is hard to fix because I've mentioned it on this message board at least once before and have sent it in on a bug report but it still isn't fixed.

                          Also, to make it more generic, the initial counts should not be based on "cmast" because it's possible that someone could be running the application directly on the server. Instead, I'd use the "datapath":
                          Code:
                          DIM datapath as C
                          IF a5.Get_Master_Path() = ""
                               datapath = a5.Get_Path()
                          ELSE
                               datapath = a5.Get_Master_Path()
                          END IF
                          Note: My standard is to add "+chr(92)" to each datapath definition so I don't need the backslash before the file name.

                          For awhile I was thinking that there might be a situation where you would want to leave "cmast" as-is so a developer could work on the server even if the full allotment of users are already logged in. However, because of the initial issue I mentioned, it really won't matter if the other users are on a runtime and the developer is on a full version.

                          Not to take away from Dave's method - which is great for what it does and the price is right - but if anyone needs something more robust that tracks both full and runtime users plus many other features, it might be worth checking out my AIMS Registration routines. (No, it's definitely not free.)
                          Last edited by CALocklin; 08-31-2008, 12:29 PM.

                          Comment


                            #28
                            Re: runtime license

                            Cal,
                            I had a hard time finding the cost of your AIMS Registration routines on your site. What is the cost?
                            Thanks,
                            Larry

                            Comment


                              #29
                              Re: runtime license

                              Cal,

                              Cmast is a variable.

                              There is no possibility in runtime for someone to be working inside the folder on the server directly. Any server use that would come up is mapped from a runtime in a different folder.

                              the server folder only holds the data.

                              Said another way: everything else is a shadow with the runtime installed either from a different computer or at least a different folder.

                              All checks run on it have come up accurate so far + 1. Could it be better? Sure it could, but it has not been found necessary.



                              .
                              Dave Mason
                              [email protected]
                              Skype is dave.mason46

                              Comment


                                #30
                                Re: runtime license

                                RE: Cmast is a variable: I figured this was probably working fine for your situation. I didn't intend to imply anything bad about what you did - just wanted to point that out for others who may permit someone to work on the server data directly. If someone uses the original script when accessing the main data folder directly, it won't cause an error but the count will always come up +1 because cmast will be blank and the effective result, a5_registration_license_inuse("\sales.rmuf"), will return 0 rather than an error.

                                As far as the count coming out right, it will work in your situation because people are only using the runtime. If both a full and runtime version are used on the same network, the total count will not include both - this is a problem with A5 that they apparently don't want to fix because most people don't care. Perhaps because most either don't understand the issue or don't have customers running both the runtime and full version. Personally, I don't like and won't use those 'count' commands because some of my apps run on networks that have both versions.

                                And, just for those not completely familiar with the runtime and network optimization, here's a nit-picking clarification:
                                The following is probably true the way Dave has set his up but it isn't a requirement of Alpha: "There is no possibility in runtime for someone to be working inside the folder on the server directly". Although seldom done and not usually the best way to do things, it is entirely possible to set up the runtime to access the data folder directly - either from the server or from a workstation. The "runtime" and "shadowing / network optimize" are two separate things either one of which can be used without the other. It is also entirely possible to have a full version of A5 on a workstation running a shadowed version. I've even been known to run a full version against a shadowed copy on the server just for testing. (Be very careful when shadowing to the server NOT to overwrite your original data files!) Although generally used together, remember that "runtime" and "shadowed" are separate features.

                                Larry - the cost is $150 but you can't buy it without contacting me first. I don't want to post any info on the internet that might make it easier for someone to figure out how it works so anyone truly interested should contact me personally for additional info. I also don't want anyone to pay that much without understanding what is required to set it up. It isn't terribly difficult but isn't a matter of just "drop it into the addins installed folder and your app is ready for registrations." It does require some additional setup which can easily be done - even to an otherwise completed application.

                                Comment

                                Working...
                                X