Installshield

Bugs

The Installshield Installer has a number of bugs:
  • The installer seems to require Java 1.3.1_02, and will not work with Java 1.3.1_07. Ptolemy itself will run under Java 1.3.1_07, the problem here is that the installer might say something like 'A suitable JVM could not be found'. The workaround is to install Java 1.3.1_02, or to install from source.
  • Before upgrading your JVM, you should uninstall Ptolemy II. The uninstaller may not work if the JVM that was used at install time cannot be found.
  • If you upgrade your JVM, then you may need to reinstall Ptolemy II. The problem here is that the Installshield Launcher that is run from the Start menu has the JVM that was found at install time hardwired into it. Sadly, the launcher will not try to find another JVM if the installtime JVM is not found. Alisson Brito wrote the following about how to tell the installed version to use a different version of the JVM.
    I've unmounted the installer file with the command:
            ptolemyII1.0.1.exe :is extract
    
    After that I've created a file called sun_win32_140.jvm
    Then I 've made the product,xml to know that my .jvm file exist and that
    I have a jdk1.4.0 installed in a determinated path.
    And finally I run:
               java run (that execute run.class)
    
  • By default, the Ptolemy II is installed in the All Users menu. Ideally, the user would be given a choice as to whether Ptolemy II was installed for the current user or in the All Users menu.
  • If you choose to install using the Installshield installer applet, then hitting cancel does not stop the download.
  • The user should be prompted for where in the Start menu Ptolemy II is installed.
  • The size of the install may be reported as 0kb.
  • The percent completed bars may not work.
  • Installing a bundled JRE does not work well so we don't use it. Installshield Multiplatform edition can be configured to download a JVM, but the JVM gets installed in a _jvm directory and is not added to Add/Remove Programs and the browswers can't use the plug-in.
    The JRE is roughly 5Mb in size, so it is not feasible to require users who are downloading small applications to pull over a 5Mb file they may or may not need.
  • Installshield Multiplatform Edition 4.0 can't update environment variables, so the user's path is not updated to include the directory where vergil.exe is located. This might be fixed in Installshield Multiplatform 4.01.
  • See the Limitations page for other limitations.

    Debugging

    The most common problem with the Installshield Installer is that it will fail to resolve the JVM. This is a shortcoming in Installshield Multiplatform, ideally the installer would check the version number and use any JVM greater than version 1.3. Instead, we need to specify each JVM by hand.

    The first thing to try is installing a more recent JVM.

    If, under NT with JDK1.3, you get the following message when you run the installer:

    L'linstruction 0x77ff7741b emploi l'adresse m?moire
    0x00000034
    la memoire ne peeut pas etre "read".
    
    Then be sure that Sun's java.exe is in your path before the Microsoft java.exe.

    Ultimately, you may find it easier to download the source Ptolemy II distribution, install Cygwin and a JDK and then rebuild by scratch.

    If you are interested in trying to debug Installshield, below are some notes

    JVM Verification

    The Installshield installer verifies the version of the JVM, runs the installer and then adds Installshield launchers to your Start Menu. The launchers then also verify the JVM and start up Vergil.

    You can generate a log file that contains the Java verification steps by running the following command in Cygwin Bash:

    e:/ptII1_0_1setup.exe -is:logfile c:/tmp/log.txt
    
    By reviewing the output, you might be able to determine where the Installer is looking for the JVM

    Note that the Installshield launchers also verify the JVM.

    Extraction

    The Installshield installer and launchers contain several files that can be extracted with the -is:extract command
    bash-2.03$ ./ptII1_0_1setup.exe -is:extract
    bash-2.03$ ls
    Verify.class          ptII1_0_1setup.jar      sun_win32_131001.jvm
    ibm_win32_122.jvm     sun_win32_122.jvm     sun_win32_131002.jvm
    ibm_win32_130.jvm     sun_win32_13.jvm      sun_win32_13101.jvm
    input.tag             sun_win32_13001.jvm   sun_win32_13102.jvm
    instructions.txt      sun_win32_13002.jvm   sun_win32_131b.jvm
    launch.txt            sun_win32_13003.jvm
    ptII1_0_1setup.exe      sun_win32_131.jvm
    bash-2.03$
    
    You can try running the installer by hand, without running the verification step:
    java -jar ptII1_0_1setup.jar
    
    Note that the Installshield launchers will still try to verify the JDK version, so they are unlikely to work if the Installshield installer fails.

    If the installer hangs part way through, try running in console mode:

    java -jar ptII1_0_1setup.jar -console
    

    Another workaround would be to start Vergil by hand, see Troubleshooting Vergil.

    Command Line arguments

    The Windows Installshield .exe files can take the following command line arguments:
    -is:extract
    Extract the components from the .exe file.
    -is:in
    Unknown, probably for input files.
    -is:javaconsole
    After JVM resolution, bring up a window that will display the contents of standard out. Another workaround is to run the installer in a DOS or Bash shell
    -is:javahome
    Unknown, could be a way to specify which JVM to use. Unfortunately The Installshield verification step is likely to reject non-standard JVMs
    -is:log logfile
    Send log output to logfile To generate a log file, run e:/ptII1_0_1setup.exe -is:logfile c:/tmp/log.txt
    -is:silent
    Run in silent mode?
    -is:tempdir tempdir
    Use tempdir as a temporary directory.
    -is:version
    Print out the version of the installer?