Downloadable component and upgradable software (without duplication)

Comments

1 comment

  • Avatar
    BitRock support

    Hi

     

    tchuck,

     

    I'm not sure I fully understand your scenario but I will try to suggest some pointers about how to handle updates which may help you.

     

    Do you really need the downloadable component (having a small installer that then downloads the components at install time)? That feature is usually recommended when your installer includes many big optional components that the user may skip, so he does not need to download all of them if they are not needed. For a single component, I would recommend building a regular installer (unless the component is optional).

     

    Regarding the update, in most of the cases you can use an single installer that behaves as a "first installer"  and as "upgrade installer" depending on the environment in which it runs so you should not need any duplication.

    To make the user always use the latest one available, you could implement different workflows. One would be enabling <checkForUpdates> in your project. That will make the installer automatically show a few builtin pages explaining the installer will check for updates. If you are fine with those pages but want to not do it the first time, you could modify the property on the fly based on some condition:

     

    <initializationActionList>
       <setInstallerVariable>
         <name>project.checkForUpdates</name>
         <value>1</value>
         <ruleList>
           <!-- Some condition to check if this is
             the first installation -->
           ...
        </ruleList>
    </setInstallerVariable>

    </initializationActionList>

     

    In any case, I would recommend always enabling it. In case someone downloads your installer but does not try it until 2 weeks ago, and a new release is already available.

     

    You could also implement a more manual approach and create your own updates system by querying your server using the <httpGet> action and downloading it. That would also give you a lot of control over the full process.

    Regardless of how you get the updated installer, you could then configure it to be in upgrade mode on the fly:

     

    <setInstallerVariable>
       <name>project.installationType</name>
       <value>upgrade</value>
       <ruleList>
    <!-- On Windows, you can check if the software is installed checking the registry --> <registryTest> <key>HKEY_LOCAL_MACHINE\SOFTWARE\${project.vendor}\${project.fullName}\</key> <logic>exists</logic> <name>Location</name> </registryTest> </ruleList> </setInstallerVariable>

    You could also enable/disable different sets of components, perform modifications over certain files or backup before running the upgrade...

    Please let us know if any of the above solutions would help solving your problem and we will try to provide additional details.

     

    Best regards,

     

    Juanjo.

    0
    Comment actions Permalink

Please sign in to leave a comment.