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

Bootstrap Suggestion Please.

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

    Bootstrap Suggestion Please.

    I have a customer that wants to upgrade to V11.

    He already has an existing app on his Server.

    I would appreciate suggestions as to the best way to create a boostrap that will install V11, link to the existing application on the server and then create the shadow.

    At the moment there is no full or runtime installed anywhere.

    Thanks in advance.
    Regards
    Keith Hubert
    Alpha Guild Member
    London.
    KHDB Management Systems
    Skype = keith.hubert


    For your day-to-day Needs, you Need an Alpha Database!

    #2
    Re: Bootstrap Suggestion Please.

    Keith,

    I currently(on a server type install) create 2 apps. 1 is the serverside install that is quite simple because there are no paths. The second one is the shadowed part: I create a shadow that goes to the same name as the clients server including the folder where the data files are. Each of the two parts are on a different disk/install.

    My runtime is normally in folder c:\alda, the shadow is in c:\alda\whateverapp. usually already pointed at \\servername\appfolder\whatever.adb .

    I do use an installer(not alpha's but astrum) to put the files in place and run any changes I need. It also registers the dll's depending on win version. Install .net or whatever you need.

    Where he already has an app on the server, may I suggest you get a copy and duplicate the server. It is probably the quickest.

    edit correction: I misunderstood the question. Let me clarify a bit, I do not send the v10/or installer. I actually copy the installed alpha runtime folder to the other computer. They can't put it in the wrong place if I do that. Knowing the path to the server, you can make a install adb that will run one time. minimize, Create the shadow in xbasic, delete that adb and exit.

    If you use astrum installer, it will place all your premade startup links and any other you need.
    Last edited by DaveM; 10-22-2011, 02:06 PM.
    Dave Mason
    [email protected]
    Skype is dave.mason46

    Comment


      #3
      Re: Bootstrap Suggestion Please.

      This is relatively easy with a good 3rd party installer.

      I've installed new versions of A5 to apps by just using my 3rd party installer to install the new version of A5 and read the registry entries to create a new icon. The trick is in finding out where the icon should point to. On generic apps I generally put my applications in a subfolder of the A5 executable folder. That makes it easy on the workstations - just read HKey_Current_User/Software/Alpha Software/Alpha Five [version("v")]/RTExeLocation/RTExeLocation and install the new version of A5 to that location and use your subfolder name to create the icon. (If you put it all in the same folder, there is obviously no need to add the subfolder name! And if you can't figure that one out on your own you shouldn't be developing database applications.)

      On customer specific apps the app files could be just about anywhere so I set a registry entry to identify both the main data path (on the server) and the local folder. It's easy to figure out where the v5 program is as noted above but (unless you force your users to install to a specific folder which I think is a very bad policy) you have to have a registry entry that identifies both the main application folder and shadow folder as appropriate. Just use the registry.sys_create() function to do that.

      In this example I didn't overwrite the v9 runtime with the v10 runtime. Instead I added the v10 runtime in a parallel folder because I was hoping to solve some memory issues in v9 and I wasn't sure which one would work better - so I wanted the ability for the user to switch back and forth if necessary. (It turned out they both have essentially the same memory issues/conflicts so it was really a waste of time but I had to try.)
      Code:
      Company_name = "AIMS DataCom"
      [COLOR="#0000CD"]'Determine current app name.
      'Must use AppName based on adb name because some of my registration functions 
      'are called from within other reg functions.[/COLOR]
      appname = file.filename_parse(a5.Get_Name(),"N")
      cur_path = a5.get_path()
      
      '2010-03-10 Added this so I could easily install an A5 version 10 update with 
      'Astrum. It removes the backslash at the end as needed by Astrum.
      'Registry.sys_set() can't be used here because it only resets EXISTING values.
      ExeParentPath = left( file.filename_parse( a5.Get_Exe_Path(), "DP" ), -1 )
      registry.sys_create( "Hkey_current_user\Software" + chr(92) + Company_name + chr(92) + appname + "\ExeParentPath", ExeParentPath )
      'NOTE: The above is the PARENT to the exe folder. I did this because I wanted 
      'to install v10 in a folder parallel to v9 in case the user needed to go back 
      'to v9.
      
      DIM datapath as C
      IF a5.Get_Master_Path() = ""
      	datapath = a5.Get_Path() + chr(92)
      	'2009-04-08 Added registry value so the install routine can determine which 
      	'icon to use - shadowed or not.
      	registry.sys_create( "Hkey_Current_User\Software" + chr(92) + Company_name + chr(92) + appname + "\Net_Type", "Direct" )
      ELSE
      	datapath = a5.Get_Master_Path() + chr(92)
      	registry.sys_create( "Hkey_Current_User\Software" + chr(92) + Company_name + chr(92) + appname + "\Net_Type", "Shadow" )
      	Registry.sys_create("Hkey_Current_User\Software" + chr(92) + Company_name + chr(92) + appname + "\ShadowPath",cur_path)
      END IF
      'Record the path to the main data relative to this workstation - used for 
      'installing updates from any workstation.
      Registry.sys_create("HKEY_CURRENT_USER\Software" + chr(92) + Company_name + chr(92) + appname + "\DataPath",datapath)
      EDIT:

      Originally posted by DaveM View Post
      ...I create a shadow that goes to the same name as the clients server including the folder where the data files are....
      I don't mean to pick on you because I know a LOT of people (probably most A5 developers) do this kind of thing where they force the user to put things in a specific folder. If I start to install an app that does it that way, I will NOT install it. My windows files are all on my C: drive; my program files are on my D: drive; and my data files (including spreadsheets, word processing documents, etc.) are on my E: drive. Data backups consist of backing up my E: drive. (In fact, my data drive is also a separate physical drive so (a) I won't lose both my system and data at the same time and (b) it's supposed to run a bit faster that way.)

      I should also add that I've received a number of compliments from users because I don't force them to install to a specific folder. Most people will just install to the default folder but those that don't want to will often have strong feelings about it. And it's really not that difficult to give them the option.

      It really is VERY easy to allow the user to install to any folder they want to - especially when using something like Astrum. Just add the registry settings as above and let Astrum read them into variables that you can use to install to the appropriate folder and/or create the correct icon. If anyone needs more Astrum specific details, I'll be happy to help.
      Last edited by CALocklin; 10-24-2011, 02:41 AM.

      Comment


        #4
        Re: Bootstrap Suggestion Please.

        I don't mean to pick on you because I know a LOT of people (probably most A5 developers) do this kind of thing where they force the user to put things in a specific folder.
        Not what I meant. I meant the shadow is already pointed at whatever the folder is on the server when the shadow is copied over.

        As far as the forced folder: I follow many of the larger companies and always install my apps under one main folder on the c: drive. My main folder is ALDA. This is not a forced issue though. The app IS going to be under the main folder though. I did not always do it this way and only recently started this. The shadow under c:\alda\myapp can be using data from anywhere on any computer as a server.

        I followed some of the same conventions as companies like ms, broderbund, eversoft, etc. I am sure you can install some of these to other directories with good to mixed results. You can do the same with mine. When is the last time you installed windows to a folder other than c:\windows?
        Dave Mason
        [email protected]
        Skype is dave.mason46

        Comment


          #5
          Re: Bootstrap Suggestion Please.

          I guess I jumped to a conclusion there. And you even said "normally installed in folder..." but I missed the "normally". However, I still stand by the basic concept of not forcing users to install to a specific drive or folder. Apparently you do it that way too. (I've been known to force the final folder to have a certain name but I still allow that to be put under any higher level folder.)

          The other thing that confused me was this statement: I create a shadow that goes to the same name as the clients server including the folder where the data files are.

          How do you do that? Is it a custom install definition for that particular customer based on working with the customer and learning how the server was set up - or maybe setting it up yourself on the customer's system? I'm guessing it is but, just in case, if it's not then I'd like to know how you do it. The installers I work with most frequently are for generic apps sold to multiple customers and I've never figured out any way to be certain how their servers are set up or mapped. Consequently, my workstation install uses pretty much the same concept as the bootstrap routine in Alpha's Help file. (I don't use Alpha's simply because I developed mine before theirs was published.) But that requires the user to know how to navigate to the proper server location from each workstation (and they aren't always the same) and it can sometimes be great fun explaining how to do that to someone on the phone who has no idea what they are doing!

          EDIT: And, like you, my app is all under one main folder. On generic apps that "main folder" (C:\AIMS_DC by default) is where I put the runtime. I usually put the application in a subfolder under that but don't consider it mandatory. I just prefer having them separate to make it easier to keep track of which files are for what purpose. On most non-generic apps I've dealt with, the runtime (or full version) is already installed and the app has often been started so I just leave the paths alone. But I still add the registry settings in the autoexec so my installer can find it if they move it - and some do!
          Last edited by CALocklin; 10-25-2011, 10:46 PM.

          Comment


            #6
            Re: Bootstrap Suggestion Please.

            The other thing that confused me was this statement: I create a shadow that goes to the same name as the clients server including the folder where the data files are.
            If I have a client running one of my boxed apps, the server can be anywhere on any machine. I do not know where they will put it. I do know the name of the adb, so I can create a shadow copy on one of my machines directing the shadow to point to something like \\clientserver\myserverfiles\something.adb(I do not like mapped drives). I simply then copy that shadowed app folder and send it to the client. He can copy that and the files to run it onto any and all machines he wants to on that lan. As an aside, htere is a program out there that will search the data files out for you so no matter where they are, you can get the path programmatically.

            Of course, when my app starts, it actually prompts the user for the correct path to the data. The afore mentioned is only used(once so far) if a client is too lazy/dumb to do it them selves.

            I can and sometimes do create all kinds of stuff for lazy/dumb install gurus.

            My latest app comes with a 30 day demo(not too hard), it also can be installed over the older version. After 30 days they have to register or ask for an extension. That took a little work because I changed 7 tables. This is a commercial app sold over the inet and on cd. That last part took some work. I now have something I plan to install into all my applications so the deployment and upgrades/updates are flawless.

            I have a registration table, an app run at a certain time during the install, a backup folder, and a little code in autoexec. It was easy once I figured it out.
            Dave Mason
            [email protected]
            Skype is dave.mason46

            Comment


              #7
              Re: Bootstrap Suggestion Please.

              Dave,

              So is brain surgery! .. :) (It was easy once I figured it out.)
              Seriously ... I learned something from both You and Cal ...
              Thanks Guys!

              Jim
              Truth between candid minds can never do harm. Thomas Jefferson
              The more I study nature, the more I stand amazed at the work of the Creator. Louis Pasteur

              Comment


                #8
                Re: Bootstrap Suggestion Please.

                Here is the Bootstrap code from Wiki. I just tested it and it needs to be fixed for V11. The dialog does not open correctly to navigate to the ADB file on the Server.
                Code:
                dim master_db_name as C
                dim shadow_db_name as C
                master_db_name = ""
                shadow_db_name = ""
                ui_modeless_dlg_box("Install MyAppName",<<%dlg%
                {can_exit=exit}
                {lf};
                Specify the filename of the master copy of the application:;
                %P=ui_get_file("Select file","(*.adb)",master_db_name)%.100master_db_name;
                {lf};
                ;
                %dlg%,<<%code%
                if a_dlg_button = "cancel" then
                    ui_modeless_dlg_close("Install MyAppName")
                    a_dlg_button = ""
                end if
                if a_dlg_button = "oK" then
                    if file.exists(master_db_name) = .f. then
                        ui_msg_box("Error", "Master Database not found.")
                    else
                        shadow_db_name = a5.Get_Name()
                        a5.Load(master_db_name)
                        a5_nopt_CopyAddFiles(shadow_db_name, master_db_name)
                        create_shadow2(shadow_db_name, .t., .t.)
                        ui_modeless_dlg_close("Install MyAppName")
                    end if
                end if
                %code%)
                Please advise.
                Regards
                Keith Hubert
                Alpha Guild Member
                London.
                KHDB Management Systems
                Skype = keith.hubert


                For your day-to-day Needs, you Need an Alpha Database!

                Comment


                  #9
                  Re: Bootstrap Suggestion Please.

                  It doesn't work in 10.5 either. Dialog opens as mostly gibberish.
                  Dave Mason
                  [email protected]
                  Skype is dave.mason46

                  Comment


                    #10
                    Re: Bootstrap Suggestion Please.

                    I'm not sure why this is a modeless dialog but these fixes should work. The brackets [] were missing and the OK/Cancel buttons were missing:

                    Code:
                    DIM master_db_name as C
                    DIM shadow_db_name as C
                    master_db_name = ""
                    shadow_db_name = ""
                    ui_modeless_dlg_box( "Install MyAppName", <<%dlg%
                    {can_exit=exit}
                    {lf};
                    Specify the filename of the master copy of the application:;
                    [%P=ui_get_file("Select file","(*.adb)",master_db_name)%.100master_db_name];
                    {lf};
                    {justify=center}<15OK> <15Cancel>;
                    %dlg%,<<%code%
                    IF a_dlg_button = "cancel"
                    	ui_modeless_dlg_close( "Install MyAppName" )
                    	a_dlg_button = ""
                    ELSEIF a_dlg_button = "OK"
                    	IF .not. file.exists( master_db_name )
                    		ui_msg_box( "Error", "Master Database not found." )
                    	ELSE
                    		shadow_db_name = a5.Get_Name()
                    		a5.Load( master_db_name )
                    		a5_nopt_CopyAddFiles( shadow_db_name, master_db_name )
                    		create_shadow2( shadow_db_name, .t., .t. )
                    		ui_modeless_dlg_close( "Install MyAppName" )
                    	END IF
                    END IF
                    %code% )
                    EDIT: FWIW, I checked to code in the old Help file and the OK/Cancel buttons were actually:
                    <Click Here to Start Install!oK?.not.(master_db_name="")> <Cancel!cancel>;

                    And you should be able to comment on the Wiki and they will review and update the page. At least it has been done for some of my suggestions in the past.
                    Last edited by CALocklin; 11-11-2011, 05:45 PM.

                    Comment


                      #11
                      Re: Bootstrap Suggestion Please.

                      Cal,

                      Many thanks.

                      Looks like it was not copied correctly from original Help file. I have sent a copy to Admin.
                      Regards
                      Keith Hubert
                      Alpha Guild Member
                      London.
                      KHDB Management Systems
                      Skype = keith.hubert


                      For your day-to-day Needs, you Need an Alpha Database!

                      Comment


                        #12
                        Re: Bootstrap Suggestion Please.

                        Just an update, I created the Bootstrap and Installer.

                        I loaded this onto my laptop and ran it. The dialog asked for the adb that I wanted, first an error message said that it could not find the bootstrap name and then ran it. So far so good, sort of. After closing the app, the desktop icon still pointed to the bootstrap.

                        What have I missed or got wrong?
                        Regards
                        Keith Hubert
                        Alpha Guild Member
                        London.
                        KHDB Management Systems
                        Skype = keith.hubert


                        For your day-to-day Needs, you Need an Alpha Database!

                        Comment

                        Working...
                        X