Announcement

Collapse
No announcement yet.

How to run a command after msi is built, but before exe is made

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

  • OvalPiston
    replied
    I put it after the irbootstrap.exe and it worked great. Thanks again!

    Leave a comment:


  • Ulrich
    replied
    This is for the bootstrapper.

    Click image for larger version  Name:	SCRN-2022-03-18-03.png Views:	0 Size:	26.9 KB ID:	308333

    The other option is to code the variables, such as the value needed for strProductName, directly into the script, as mentioned in the comment I highlighted above. In this case you would not need to pass arguments (command line options), but this is up to you.

    Ulrich

    Leave a comment:


  • OvalPiston
    replied
    is that when building the MSI with "msi factory.exe" or bulding the EXE with "irmakebootstrap.exe"?

    Leave a comment:


  • Ulrich
    replied
    I suspect you did not read/do this:

    Click image for larger version

Name:	SCRN-2022-03-18-01.png
Views:	44
Size:	49.0 KB
ID:	308330

    Ulrich

    Leave a comment:


  • OvalPiston
    replied
    Why does the EXE show "$(ProductName)" when it is extracting files? I have all the fields filled out in the .xml file, and under Settings I have the product name filled out.

    Leave a comment:


  • OvalPiston
    replied
    I had the ID not set to "mainsetup". Works now!

    Leave a comment:


  • OvalPiston
    replied
    I did the "Build" from the main interface and the above was my result.

    Then I clicked on Build from the Bootstrapper app toolbar and it created the .exe. Looks to have the .MSI embedded too, but when I try and run it, it says
    "Failed to extract setup file. (3701)"

    Leave a comment:


  • OvalPiston
    replied
    I took my existing .msifact, added the bootstrapper based on the Extract and Run Single MSI, renamed the MSI in the list of files to "mainsetup", but I get this error:



    Generating bootstrapper...

    LZMA 9.38 beta : Igor Pavlov : Public domain : 2015-01-03

    LZMA 9.38 beta : Igor Pavlov : Public domain : 2015-01-03
    Indigo Rose MSI Bootstrapper
    Copyright (c) 2015 Indigo Rose Corporation - www.indigorose.com
    Initialize folders...
    Loading configuration file...
    Copy setup executable stub...
    Writing Version Resources...
    Adding bootstrapper execution level manifest...
    Adding files...
    c:\temp\mainscript.lua.tmp
    c:\temp\_global_functions.lua.tmp
    msi
    ERROR: LZMA compression failed: msi -> c:\temp\sfwD8D6.tmp
    Cleaning up temporary files...
    Bootstrap build failed: 6

    LZMA 9.38 beta : Igor Pavlov : Public domain : 2015-01-03

    Error: can not open input file msi
    Error 1011: IRMakeBootstrap.exe returned error: 6
    Deleting temporary files

    Build FAILED! Error: 1011 - Error executing pre/post build step

    Leave a comment:


  • OvalPiston
    replied
    Revisiting this. I have an existing .msifact setup file and I'd like to use it if I can? It has all my custom dialogs, etc in it.

    How would you suggest I do the above in a custom bootstrapper using my existing .msifact file?

    Leave a comment:


  • Ulrich
    replied
    Understood. To achieve what you want, I suggest that you use the "Custom" option.

    Go to Tools > Bootstrapper Designer, create a new project based on the "Extract and Run Single MSI" template.
    Add your existing MSI file to the list of files, and give it the ID "mainsetup".
    Save the bootstrapper project, and build to see if there are errors.
    Run the exe which was created, and see if the MSI starts normally.

    If everything is okay, you can now build everything from the command line. Set the bootstrapper to "None" and save the updated project. You can now build the MSI with a batch file (see the "Unattended Build Options" in the MSI Factory help file), then you can sign the MSI by invoking signtool with the /a parameter, then run the bootstrapper builder project (again, command line parameters can be found in the docs, see "Using IRMakeBootstrap.exe" in the bootstrapper help file), and the fourth and final step would be calling signtool again, but now to sign the executable.

    The bootstrapper built in this manner can still process the "/EXTRACTMSI" command line argument, allowing your client to save the MSI if needed, but it gives you more much options than the standard option.

    Ulrich

    Leave a comment:


  • OvalPiston
    replied
    No, Standard.

    Leave a comment:


  • Ulrich
    replied
    Are you using the "custom" bootstrapper?

    Click image for larger version

Name:	SCRN-2021-02-01-01.png
Views:	112
Size:	5.5 KB
ID:	306073

    Ulrich

    Leave a comment:


  • How to run a command after msi is built, but before exe is made

    I need to sign the MSI file and also the final EXE file. I can't use the built-in sign code because it doesn't work with EV certs, so I run the signtool command "After Build". This works fine for signing the EXE, but is there a way to run a command after the MSI is created, but before the EXE is built? This way I'll have a signed MSI and a signed EXE. Some customers extract the MSI from the EXE, while others just want the MSI, so I need to have it signed. Thank you.
Working...
X