Jump to content

Restart required after LabVIEW installer called from Inno Installer


Recommended Posts

Hey all,

(Cross-post from ni.com forums)

We have a LabVIEW application, which has a LabVIEW-based Installer.  This LabVIEW installer is called from within another Inno installer (since our main Inno installer pulls together multiple components, most of them not LabVIEW).  Whenever this Inno installer ends, it always asks the user to restart their PC, even if the LabVIEW installer was cancelled.

I narrowed it down, and it's reproducible with only the LabVIEW installer, so it's definitely LabVIEW installer's fault.  According to Inno's help documentation, "if a program executed in the [Run] section queues files to be replaced on the next reboot (by calling MoveFileEx or by modifying wininit.ini), Setup will detect this and prompt the user to restart the computer at the end of installation."  However, as stated above, this dialog is triggered even if the LabVIEW installer was cancelled and wrote no files.

Now, the above linked documentation refers to a flag I can put in my installer script to ignore this restart dialog, but it's a global flag, and I would like my other installers to still make use of this handy restart dialog if necessary. Unfortunately it seems LabVIEW installers trigger this even if not actually necessary.

Has anyone seen this before? Any ideas how to make my LabVIEW installer NOT muck around with the MoveFileEx or wininit.ini stuff if/when it's not actually needed?  Attached is a LabVIEW project and Inno Installer script which easily reproduces the problem.  To reproduce:

  1. Extract the attached .zip
  2. Open test.iss in Inno Setup and click the "Run" button
    1. Alternately, just run the built installer under "\Output\test_inno_installer_9.99.0.0.exe"
  3. Click Next on 'Select Components' dialog
  4. Click Install on 'Ready to Install' dialog
  5. When LabVIEW installer pops up click Cancel, then yes (you're sure)
  6. See the Restart dialog

Thanks!

David_L

InnoLabVIEWBug.zip

Edited by David_L
Link to post
Share on other sites

I do use Inno setup, and I am familiar with some of these options.  But I've never really tested the cancel functionality and what it might do or how to clean up.  Sorry.

Link to post
Share on other sites

Maybe it would be an option for you to run the installer in silent mode (and/or) with the reboot suppression: Customize and Automate Installation of a Single NI Installer This article might be of some use also: Running a Batch File Automatically After an Installation to Access Installed Files And here's the similar thread, that points to these two articles mentioned.

I also think, there's an option to not use a single LabVIEW installer, but use a bunch of msi installers by pulling them from that .exe and putting all the files into one final Inno setup .exe. You could try to run each msi with one of those flags to suppress the reboot message:

msiexec /qn /i Application.msi REBOOT=ReallySuppress
msiexec /qn /i Application.msi REBOOT=R
msiexec /package Application.msi /norestart
Edited by dadreamer
Link to post
Share on other sites

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.

  • Similar Content

    • By DARTHWOD
      Hi Friends,
      I am facing issue in labview programming. My vi read csv file in a folder and plot it in waveform graph. Initially i have twenty csv file in that folder, while runnning my vi some more csv files will be added to that folder. The problem is only twenty csv file initially placed got read, later added csv files were not read by labview. 
      Condition: Once my vi starts running, the files will be automatically added to that folder. Because i am running an experiment which stores data in the form of csv file to that folder. How to keep on read the csv files continuosly while my experiments stores series of csv files.

    • By daoudi
      Hi,

      Can I put a vi labview application on a web server on html 5 for exemple?

      if we can do that, it can be done just in local network(with several machines TCP/IP) or can be connected with a web server ?

      Thank you 
       
    • By John2787
      Reposting this here in an effort to gain some traction because it's absolutely killing me. 
      I'm trying to build a standalone .exe with a VI that contains a Scilab script using the Scilab gateway. On the actual program I created I get an error message stating that the front panel cannot be loaded on the SubVI that contains the Scilab script node. If I delete the node the program runs fine. 
      I decided to create a very basic VI containing a Scilab script to troubleshoot, and I get the following error: "This VI is not executable, The full development version of Labview is required to fix the errors". I don't understand this at all, since I do have the full development version of labview. Also, the code runs fine as a native VI, and this error is occuring on my development machine, so all required files should already be in the correct locations. Additionally, I've added "ScriptScilab.dll" as an always included source file and it's in the correct folder for the runtime engine. In fact, I've tried it in multiple different locations (app data directory, app root directory, LV2017 root directory, etc...) and still nothing. 
      What am I missing here? .Zip of may sample application attached. 
      My Application.zip
    • By Rob Calhoun
      Hi LAVA-ers,
      I'm finally implementing a long-delayed transition from our homebrew LabView build system to Jenkins.
      The best build-step option (for Jenkins under Windows) seems to be "Execute Windows batch command". My batch command looks like this:
      pushd "directory-containing-lvproj" echo "Running LabVIEW build process..." start "bogustitle" /wait "C:\Program Files\National Instruments\LabVIEW 2017\LabVIEW.exe" "Build.lvproj" "BuildJenkinsProject.vi" echo "complete, errorlevel %ERRORLEVEL%" popd where BuildJenkinsProject.vi is set to run when opened. BuildJenkinsProject.vi reads some environment variables set by Jenkins, sets up the builds (multiple EXEs and installers defined in a different lvproj) builds away.
      But my builds take a while, and I'd like to see the output from my logging system inside Jenkins while the build is in progress. Some Googling turned up these posts re: sending output to stdout from LabVIEW:
      https://lavag.org/topic/13486-printing-to-the-standard-output/
      https://lavag.org/topic/11719-running-a-labview-exe-from-the-console/
      I'm running LV 2017 64-bit, and none of the existing examples were handling 64-bit HANDLEs correctly, so I wrote a new version. This version uses only WinAPI calls (vs WinAPI + .NET), fixes some bugs, and it stateless, so you can call it anywhere in your code. Even when flushing the buffer after every write (which some on the Internet claim is necessary to get real-time log output; I am skeptical) it is plenty fast, around 10,000 lines per second. Since jdunham had previous written a fancy object-oriented logging system, I subclassed our logging system to write to stdout as well as the regular log. When I build from cmd.exe using the above batch file, it all works as intended.
      My problem: when Jenkins runs my batch file, I get something rather less exciting: nothing!
      E:\Jenkins\workspace>labview\Build\BuildJenkinsProject.bat E:\Jenkins\workspace>pushd "labview\Source\Build\" E:\Jenkins\workspace\labview\Source\Build>echo "Running LabVIEW build process..." "Running LabVIEW build process..." E:\Jenkins\workspace\labview\Source\Build>start "bogustitle" /wait "C:\Program Files\National Instruments\LabVIEW 2017\LabVIEW.exe" "Build.lvproj" "BuildJenkinsProject.vi" E:\Jenkins\workspace\labview\Source\Build>echo "complete, errorlevel 0" "complete, errorlevel 0" Not a big deal since I have my regular log files, but having gotten this far it would be nice for Jenkins to show work-in-progress. Any ideas? In the meantime, here is a stdout writer. (Released under MIT License, copy away.)
      -Rob Calhoun

      Attached: stdout writer function for LabVIEW 2017, and save-as-previous to LabVIEW 2012.
      WinAPI Write to StdOut Folder.zip
       
    • By Nienscecco
      Bonjour,
      I use Labview 2015 32-bit on a 64-bit Win& pro computer.  My application connects to Hardware using NI-VISA and NI-DAQmx only (Two RS232 communications via a VCOM port and one NI DIO card using DAQmx).  
      Until today, I was building an executable which  I was copying through the network on another win7 pro machine in the lab next to the hardware.  It was working fine with Labview Runtime 2015 installed on this machine along with NI-VISA and NI-DAQmx.  I never used an installer, I installed those 3 components seperatly.
      Yesterday I added some features to the application and the EXE won't start.  I have an error msg saying "The VI is not executable. The full version of Labview is needed to fix errors".  The machine in the lab can't run the EXE but the EXE won't even start on my development machine.  
      My previous EXE from last week still works fine. The code works fine with all new features if I run the main VI from the development environment. I've double check all of my licences status. If I open another project and compile the EXE, I am able to run this EXE (I use a complex app containing almost all the same software components) If I build an EXE with a different UI source file part of the same project, that EXE works fine. If I build the EXE from my previous version again, it works fine too. I tried removing all the new features I had added in the project and build the EXE again and I still get the error. I tried creating a new project file and import the same librairies to try building an EXE from a fresh project file and I still get the error. I tried installing Labview 2015 on another computer and try to build an exe from a fresh labview install on this computer and I get the same error. The development machine can't execute the compiled EXE) It has to be related to the code but, I can't roll-back and get functionality of the EXE again unless I totally replace all of my files from a backup made last month.  The most recent posts I read from a similar error are from 2013 and later.  And the problem described is always that the EXE does not work on the deployment machine but works fine on the development machine.  I must be at version 25 of this application to which I add improvements on a regular basis since almost 1 year.   I am really puzzled.  Is there a way to analyse or get more info about the broken EXE error?  All the new features I added are using components that were already present in the project and in the main VI.  The new features are important, I'd really like to use this working code with the hardware as soon as possible but I don't really want to install labview on the development machine.
      Any ideas? I don't know what to try next.  What would be the best information to provide / look for for the next step?
      Thanks to all in advance
      Nien
×
×
  • Create New...

Important Information

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