How to always get latest files without recreating MSI installer?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • e500
    Indigo Rose Customer
    • Aug 2009
    • 17

    How to always get latest files without recreating MSI installer?

    Hello,

    Here is the problem I'm trying to get around. A typical deployment scenario of our applications is basically nothing more than copying the same set of files (an EXE and a preset number of DLL's) from the same network location to user machines. Files names will be the same at every deployment. The important thing is, however, that the files themselves are going to be different since they are regenerated every time to include the latest code changes done to the apps.

    I successfully built and tested an MSI that does the job. Now when I change one or more of my files and rerun the same MSI, it copies the old files, namely those that were used at the time of creation the MSI. This seems to be a major obstacle because we would have to recreate our MSI every time as well to "refresh" the files that come with it (get the newest files "embedded" into it). But we want to completely automate it.

    What we would like to have is an MSI that would go to where our files are and "grab" the ones that are currently there. Like I said, the number of these files, their names and location will likely never change. Is there a way to accomplish this?

    MSI factory doesn't seem to have a setting that would tell an installer to get fresh files as oppose to copying those that got built into it. I also tried bootstrapping but that did not help either. I'm probably missing something very simple.
    Any ideas will be highly appreciated. Many thanks!

    Leon, the developer
  • Ulrich
    Indigo Rose Staff Member
    • Apr 2005
    • 5103

    #2
    Originally posted by e500 View Post
    What we would like to have is an MSI that would go to where our files are and "grab" the ones that are currently there. Like I said, the number of these files, their names and location will likely never change. Is there a way to accomplish this?

    MSI factory doesn't seem to have a setting that would tell an installer to get fresh files as oppose to copying those that got built into it. I also tried bootstrapping but that did not help either. I'm probably missing something very simple.
    Yes, this is possible, although a bit unusual. I don't see why you would pack the files into the installer, if you are going to use always the external files...

    You could use Setup Factory for this, or the bootstrapper or a custom action (Run LuaScript) of MSI Factory. How exactly you get these files depends on where they are stored, so this could be HTTP.Download() (internet) or File.Copy() (local network).

    Ulrich

    Comment

    • Ulrich
      Indigo Rose Staff Member
      • Apr 2005
      • 5103

      #3
      Hi Ulrich,

      Many thanks for your help. However, it's still not clear to me how to achieve the goal. Yes, the files I need to distribute with the installation are on the network drive. Could you please provide some detailed instructions? We'll need to build the MSI on the fly from batch, so there should be a way to tell it to go to a predefined network location and grab the files with again predefined names. I couldn't find any setting within MSI Factory itself or the bootstrapper that would allow me to do that.

      A decision to buy the tool that my company is supposed to make strictly depends on whether that can be done.

      Many thanks in advance,
      Leon
      Hello,

      I am not sure that I understood. In your first post, you wrote that you don't want to rebuild your installer each time your support files change, and that the installer should fetch the files from a remote location instead. In this second post you sent me, you state that you will build the MSI in batch. If you do rebuild the MSI installer when your support files change, it will bundle the new files, if they are stored on the same location, and with the same name as before. So which one is it?

      I am giving you an example for your first scenario, where you don't rebuild the MSI installer. It will contain only the permanent files, while the installer will fetch the "new" files from a remote location. In this example, the stub application will download the files from the internet. It is easy enough to change this script and copy the files from a mapped network location - just use File.Copy().

      This example contains one dummy executable file, and four additional text files will be downloaded. This is performed with a Custom Action, executing the Lua script "DownloadFiles". Of course, files not included in the MSI can't be automatically removed upon uninstall, so you must do this manually as well. This is where the second Lua script, "DeleteFiles", comes into play. It is all pretty simple, and is just a small sample of what MSI Factory can do.

      Ulrich
      Attached Files

      Comment

      • e500
        Indigo Rose Customer
        • Aug 2009
        • 17

        #4
        In your first post, you wrote that you don't want to rebuild your installer...
        In this second post you sent me, you state that you will build the MSI in batch...
        So which one is it?


        Hi Ulrich,
        Sorry if I confused you. Well, the answer is whichever way serves the purpose - which is to be able to copy the current set of files (those with predefined names that happen to be at the certain remote location at the moment when the MSI is run). I mistakenly assumed that rebuilding MSI each time on the fly would be inevitable. Now I see I was wrong; that's even better. I'll use those very helpful Lua scripts you gave me to build the functionality I need. I think I'm really getting into it now. Ulrich, I'm extremely grateful to you for the explanations and time you spent on writing the scripts.
        Leon

        Comment

        Working...
        X