Jump to content

Separating "installer" development from code development


Recommended Posts

I'm imagining a collaboration where one developer develops the code and a different developer develops and tests the installer. The only problem I see with this is by default, there's just one lvproj file with both the code and the installer build spec in it so both developers would be working on the same "file". It might be possible to make two lvproj with the build spec in one and the installer in the other. Or maybe the code developer delivers a packed project library to the installer developer?

Has anyone gone down one of these paths?

Link to comment
On 9/3/2021 at 11:49 PM, infinitenothing said:

I'm imagining a collaboration where one developer develops the code and a different developer develops and tests the installer. The only problem I see with this is by default, there's just one lvproj file with both the code and the installer build spec in it so both developers would be working on the same "file". It might be possible to make two lvproj with the build spec in one and the installer in the other. Or maybe the code developer delivers a packed project library to the installer developer?

Has anyone gone down one of these paths?

Another option... Use a third party installer. InnoSetup works really well.

  • Like 2
Link to comment
  • 2 weeks later...

Generally, once the project is setup, it usually doesn't change much for us. If you're using .lvlib's and/or LVOOP to organise your code, ongoing development will not touch the .lvproj file much.

Yet another option... Have two .lvproj files: One for the developer, and another one for the installer.

Link to comment

I typically use a second lvproj file, not for installers, but for the unit testing.
The benefit is that I can segregate the dependency on the unit test framework (i.e. Caraya) from the source file that runs the build specs.

Although, I don't know if that's super useful if you use a CI server to run both UTs and perform your builds...

  • Like 1
Link to comment
14 hours ago, infinitenothing said:

How do you figure out the dependencies? My eyes just glaze over when I look at this screen:

image.png.dfed33b7794dd9bb97e81027226c647a.png

I just include the whole runtime and don't bother trying to cherry pick the perfect dependencies. I did try this once upon a time but could never figure out the right dependencies.

  • Like 1
Link to comment
18 hours ago, infinitenothing said:

How do you figure out the dependencies? My eyes just glaze over when I look at this screen:

image.png.dfed33b7794dd9bb97e81027226c647a.png

VMs to the rescue!  Well sorta.  I'll create a VM set up the OS the what I want, then take a snapshot.  Then copy over an installer with none of those things selected and install it.  Then run all the features of my program I can think of.  If it is broken, or things seem missing I go back and try to make a new installer with something checked that I think it needs based on what didn't work.  The VM allows me to roll back to a snapshot of when nothing was installed quickly.  But yeah for the most part, this only reduces the run-time engine size a little, and while I don't like unnecessary services, spending the time to reduce them doesn't feel worth it to me.  In the past I'd spend time reducing it and making it as small as possible.  And then I'd use some feature of something like the Math Kernel, make a new build, and now things aren't working and I need to go back and update the installer.  When previously I'd just not worry about it and include everything.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.