Calling an Executable that Requires DOS from Webpage

Could anyone helpout with this. I am trying to call an executable from a webpage. The purpose is to collect some data, store them in some strings then based on that data call the DOS executable and fill in the switches. For example the executable is clemail.exe and the switches are -to [person to] -from [person from] -subject [subjectline] etc... The DOS line looks like this:
clemail.exe -to [email protected] -from [email protected] -subject email sender -body This exe enables you to send an email from the DOS command line.
Any suggestion would be appreciated.
Thanks,
George

Could anyone helpout with this. I am trying to call an executable from a webpage. The purpose is to collect some data, store them in some strings then based on that data call the DOS executable and fill in the switches. For example the executable is clemail.exe and the switches are -to [person to] -from [person from] -subject [subjectline] etc... The DOS line looks like this:
clemail.exe -to [email protected] -from [email protected] -subject email sender -body This exe enables you to send an email from the DOS command line.
Any suggestion would be appreciated.
Thanks,
George
U can do that using
Runtime.getRuntime().exec ("clemail.exe -to [email protected] -from [email protected] -subject email sender -body ");
remember to put the clemail in path or give the entire path.

Similar Messages

  • EL - How do you call a method that requires a parameter

    How do you call a method that requires a parameter
    In scriplet code here is what I am trying to do
    <%= car.getDefaultColor(car.getCarType()) %>
    How do I do this in EL
    Here is my guess (it generates the Exception described below)
    ${car.defaultColor(car.carType)}
    Here is the Exception I am getting:
    javax.servlet.ServletException: <h3>Validation error messages from tag library c</h3>tag = 'out' / attribute = 'value': An error occurred while parsing custom action attribute "value" with value "${car.defaultColor(car.carType)}": Encountered "(", expected one of ["}", ".", ">", "gt", "<", "lt", "==", "eq", "<=", "le", ">=", "ge", "!=", "ne", "[", "+", "-", "*", "/", "div", "%", "mod", "and", "&&", "or", "||"]
    Any Ideas?
    P.S. If it matters to you, I am using JSTL 1.0 and the code snippets above are actually within the value attribute of a <c:out value="" /> statement.

    How do you call a method that requires a parameter
    In scriplet code here is what I am trying to do
    <%= car.getDefaultColor(car.getCarType()) %>
    How do I do this in ELYou don't. EL is very strict in method signatures. All get methods must be public Type getProperty(void); And all set methods must be public void setProperty(Type t);
    So you will have to re-work your Bean so it does not need an argument to the get method (getDefaultColor()). Since you are calling another method out of car, you might re-write the getDefaultColor method as such:
      public Object getDefaultColor() {
        CarType ct = this.getCarType();
        //then do other stuff
      }If that isn't suitable, then provide a helper method that is used to set the current car type and then call the getDefaultColor:
      private CarType curCarType;
      public void setCurrentCarType(CarType ct) { curCarType = ct; }
      public Object getDefaultColor() {
        if (curCarType == null) throw new IllegalStateException("CarType must be set before getting color");
        //normal work using curCarType
    <c:set target="${car}" property="currentCarType" value="${car.carType}"/>
    <c:out value="${car.defaultColor}"/>It is better to do as little of the data manipulation (setting up the car type) in the JSP as possible, so the first option is better than the second. Also better then the second would be to set the current car type in a servlet or data access object (or wherever) from which your retreive the car to begin with. Manipulatig it in the JSP itself should be your last resort (to keep as much business logic out of the JSP as possible).
    Here is my guess (it generates the Exception
    described below)
    ${car.defaultColor(car.carType)}
    Here is the Exception I am getting:
    javax.servlet.ServletException: <h3>Validation error
    messages from tag library c</h3>tag = 'out' /
    attribute = 'value': An error occurred while parsing
    custom action attribute "value" with value
    "${car.defaultColor(car.carType)}": Encountered "(",
    expected one of ["}", ".", ">", "gt", "<", "lt",
    "==", "eq", "<=", "le", ">=", "ge", "!=", "ne", "[",
    "+", "-", "*", "/", "div", "%", "mod", "and", "&&",
    "or", "||"]
    Any Ideas?
    P.S. If it matters to you, I am using JSTL 1.0 and
    the code snippets above are actually within the value
    attribute of a <c:out value="" /> statement.

  • TS1702 i have a game called dino island that i downloaded from the app store it wont work it closes when i click on an island

    i have a game called dino island that i downloaded from the app store it wont work after i click on an island why can you help?

    See:
    iOS: Troubleshooting applications purchased from the App Store
    Contact the developer/go to their support site
    Restore from backup. See:
    iOS: How to back up
    Restore to factory settings/new iPod

  • Calling Console Application that uses WebBrowser from SQL Server - Not Running

    Hi there. I am working in a program automation that needs to get files from a website and put it in a database. It is done but as I need a console application and need webbrowser that comes from Windows Forms, I am trying to call it from the SQL Server using
    the xp_cmdshell but when it runs the .exe, it execute the block that is before the Application.Run() command but when it reaches this line, it stay running on Task manager but it not execute my code. How can I fix this? I had first created a Windows form application
    but it was not working anyway and then I tried a console application and then I use the [STAThread] and Application.Run(). At least it runs the file from SQL Server but is not executing all my code, I think that it stops on Application.Run() line. Any help
    will be very useful.
    Thanks for now.

    Thanks for the response. What I mean is that it just run the part of the code that is just using the Console, that's the code:
    // Main Method
    [STAThread]
    public static void Main()
    clearDatabase(myConnection);
    Console.Title = "Suframa Itens Robot";
    //If log file exists, it is deleted
    if ( File.Exists(@"suframaLog.txt") )
    File.Delete(@"suframaLog.txt");
    wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(loginWebsite);
    try
    //It is called as the program uses the WebBrowser Class from Windows Forms namespace
    //and it is a console Application
    Application.Run();
    catch ( Exception ex )
    Log(ex.Message);
    As you can see, I call a function on start named ClearDatabase, when I call the file from sql server it executes, the tables are cleared, but what I think is that the problem stop when reach the line Application.Run() as it is the line that allows the remaining
    code to execute as it uses events from WebBrowser class. 
    It is a program automation that needs to get a lot of files from a website that needs login and read line by line from the files and put on server, if I call it from the executable it runs fine, the only problem is when calling from SQL Server, Do you know
    how to fix this?
    Thanks.

  • How to call a BAPIs that requires a commit as a Web Service

    We have a Web Dynpro Java application which has some business objects that generate notifications in a backend R/3 system.  Using JCo we simply call BAPI_ALM_NOTIF_CREATE, followed by BAPI_ALM_NOTIF_SAVE, and finally BAPI_TRANSACTION_COMMIT all using the same connection (e.g. these are stateful calls.) 
    Now we need to change from using JCo to calling these BAPIs as Web Services.  We have generated the deployable proxy for these but can't find a way to call them in the same "ABAP session."  The ports generated in the deployable proxy are set to use HTTP Cookie based sessions but the BAPI_ALM_NOTIF_SAVE and BAPI_TRANSACTION_COMMIT return empty results as if they are not being executed in the same ABAP session as the call to BAPI_ALM_NOTIF_CREATE. 
    We're running WAS Java 6.40 SP15.  Any help would be very much appreciated.

    Hi Jason,
    try to do this using JRA.
    http://help.sap.com/saphelp_nw2004s/helpdata/en/cb/072642c9dedd2ce10000000a1550b0/frameset.htm
    Vito
    Best regards,
    Please mark helpful answers

  • How to call a sp that returns multi_columns from another sp

    Hi,
    Can anybody help me to solve this problem? I called a sp which
    returns ename, sal using a weak ref cursor from another sp. Is
    it possible to do this? or I did something wrong? The error
    messages are:
    ERROR at line 1:
    ORA-00904: invalid column name
    ORA-06512: at "SCOTT.TESTPKG", line 14
    ORA-06512: at line 1
    below is my code:
    create or replace package testpkg AS           //12/19/01
    TYPE sumCur IS REF CURSOR;
    TYPE estType IS REF CURSOR;
         function totalNo (
              dno IN NUMBER)
              RETURN estType;
         procedure test(
              sum_cv IN OUT NOCOPY sumCur);
    END;
    CREATE OR REPLACE PACKAGE BODY testpkg AS
         function totalNo (
              dno IN NUMBER)
              RETURN estType IS est_cv estType;
              BEGIN
              OPEN est_cv FOR SELECT ename, sal FROM emp
    where deptno = dno and job = 'MANAGER';
              RETURN est_cv;
         END totalno;          
         procedure test(
              sum_cv IN OUT NOCOPY sumCur) AS
              sql_statement VARCHAR2(100);
         BEGIN
              sql_statement :='SELECT dname, totalNo(deptno)
    from dept ';
              OPEN sum_cv FOR sql_statement ;
         END test;     
    END;
    Thanks

    The error that you are getting is because totalNo(deptno) needs
    to be testpkg.totalNo(deptno), but that is not the only error.
    Maybe you can use something like this:
    SQL> CREATE OR REPLACE PACKAGE testpkg
      2  AS
      3    TYPE sumcur       IS         REF CURSOR;
      4    FUNCTION totalno
      5      (dno         IN            NUMBER)
      6      RETURN                     VARCHAR2;
      7    PROCEDURE test
      8      (sum_cv      IN OUT        sumcur);
      9  END testpkg;
    10  /
    Package created.
    SQL> CREATE OR REPLACE PACKAGE BODY testpkg
      2  AS
      3    FUNCTION totalno
      4      (dno         IN            NUMBER)
      5      RETURN                     VARCHAR2
      6    IS
      7      est_cv                     VARCHAR2 (30);
      8    BEGIN
      9      SELECT ename || ' ' || TO_CHAR (sal)
    10      INTO   est_cv
    11      FROM   emp
    12      WHERE  deptno = dno
    13      AND    job = 'MANAGER';
    14      RETURN est_cv;
    15    END totalno;
    16    PROCEDURE test
    17      (sum_cv      IN OUT        sumcur)
    18    AS
    19      sql_statement              VARCHAR2 (100);
    20    BEGIN
    21      sql_statement :=
    22         ' SELECT dname, testpkg.totalno (deptno)'
    23      || ' FROM dept';
    24      OPEN sum_cv FOR sql_statement;
    25    END test;
    26  END testpkg;
    27  /
    Package body created.
    SQL> VARIABLE g_ref REFCURSOR
    SQL> EXEC testpkg.test (:g_ref)
    PL/SQL procedure successfully completed.
    SQL> PRINT g_ref
    DNAME
    TESTPKG.TOTALNO(DEPTNO)
    ACCOUNTING
    CLARK 2450
    RESEARCH
    JONES 2975
    SALES
    BLAKE 2850
    DNAME
    TESTPKG.TOTALNO(DEPTNO)
    OPERATIONS

  • Calling stored function that contains commit from .JCX

    I would like to call a stored function (Oracle) that contains a commit, from
    a WebLogic database control (.JCX). The suggested way to call a stored
    function is to do something like:
    * @jc:sql statement::
    * SELECT MY_FUNCTION({projectID}, {staffID}) FROM DUAL
    int callMyFunction(int projectID, int staffID) throws SQLException;
    This doesn't work if the function contains a commit - I get: ORA-14552:
    cannot perform a DDL, commit or rollback inside a query or DML. I don't
    want to just get my own connection to the db in my code and call it directly
    because then I won't be using the connection pool provided by WebLogic. Is
    there a recommended way to do this? So far, the database control has taken
    care of getting connections from the pool. Can I get a connection from the
    pool explicitely and use it? How do I "return" it to the pool?
    Thanks.
    Steve

    Steve Kincer wrote:
    Thanks for the response.
    So far, I've only used the database control, so I haven't been doing any
    transaction management (rollbacks/commits) myself - I've just called methods
    in my database control and not worried it. Come to think of it, all my
    other calls are just SELECTs, so it hasn't been an issue, but I've assumed
    WebLogic or the connection pool would take care of transaction management
    for me if I coded an UPDATE function in the database control.
    What do you mean by "find and use the control API provided for
    defining/demarking
    transactions" ... what control?
    I've seen stuff in the help file about transaction management, so I can
    research that, but where do I get the connection to use for this? I'm
    thinking I should get it from the pool (rather than create my own
    connection). I saw a generated method in my database control called
    getConnection, but when I tried using it with a CallableStatement I got
    error:
    "The transaction is no longer active - status: 'Committed'. No further JDBC
    access is allowed within this transaction."This means that you are automatically being taken care of transactionally,
    and don't need to do any commit() calls.
    Joe
    >
    I guess it's pretty obvious that I'm pretty new to WebLogic.
    Thanks for your help.
    Steve
    "Joe Weinstein" <[email protected]> wrote in message
    news:[email protected]...
    Steve Kincer wrote:
    I would like to call a stored function (Oracle) that contains a commit,
    from a WebLogic database control (.JCX). The suggested way to call a
    stored function is to do something like:
    * @jc:sql statement::
    * SELECT MY_FUNCTION({projectID}, {staffID}) FROM DUAL
    int callMyFunction(int projectID, int staffID) throws SQLException;
    This doesn't work if the function contains a commit - I get: ORA-14552:
    cannot perform a DDL, commit or rollback inside a query or DML.Right. It is bad style to hide a commit in a procedure. The begin-tx
    and commit should be at the same level, above any specific SQL for the
    tx. How did you start a transaction? Are you sure you have an ongoing
    transaction?
    I don't
    want to just get my own connection to the db in my code and call it
    directly because then I won't be using the connection pool provided by
    WebLogic. Is there a recommended way to do this? So far, the database
    control has taken care of getting connections from the pool. Can I get a
    connection from the pool explicitely and use it? How do I "return" it to
    the pool?You should find and use the control API provided for defining/demarking
    transactions.
    Joe
    Thanks.
    Steve

  • How to execute a Perl program from within a Java prog

    How do I execute a Perl program from within a Java program.
    Lets say the Perl program that I want to execute is 'abc'. Now, 'abc' requires some input that I want to give it from within the Java program. How do I do it?
    And finally, how do I execute that Perl program from within the Java program.
    If I execute the Perl program alone then I do it in the following way -
    perl abc inp1 inp2 inp3
    where inp1, inp2, inp3 are inputs to the Perl program. I will not be able to change or modify the coding of the Perl program - 'abc' as I do not have access to its code. Its a kind of an application whose usual method of execution is in the above shown way. So, how do I execute 'abc' from within a Java program.

    what part of don't crosspost, don't you understand?
    http://forum.java.sun.com/thread.jsp?forum=4&thread=427193

  • Executing .sql scripts file from command prompt

    I had created the .sql scripts for
    --Create Database
    --Create tables
    --Create Stored procedure
    I am using SQL server 2008.
    Now i want to deploy it into the target server using the command prompt.
    How can I call to execute that script on the target server?

    with few errors as "Incorrect Syntax near "GO"".
    Hello,
    GO is a command, which is only known & interpretted by SSMS + SqlCmd.exe; SQL Server engine / data access components don't know this command, therefore you get an error.
    See
    Query Options Execution (General Page); for SSMS you can change it from GO to any other term.
    Olaf Helper
    [ Blog] [ Xing] [ MVP]

  • Is it possible to call a VI that is inside a LabVIEW executable from a TestStand sequence?

    I have created a custom TestStand operator interface and have modified the default sequential process model to display a UUT information dialog that prompts for more information than just the UUT serial number.  This UUT information dialog is a LabVIEW VI.  To distribute the operator interface, I build it into an executable.  As part of the build process, I make a copy of the UUT information dialog VI (which is part of my operator interface project) and place it in the same folder as the executable.  I have then configured the sequential process model to call the dialog VI from this location.  It would be really nice if I could embed the UUT information dialog VI inside the operator interface executable so that I could distribute just an executable instead of an executable and separate VIs.  Is this possible?  In other words, is it possible to call a VI that is inside a LabVIEW executable from a TestStand sequence just like a standard LabVIEW VI call?

    Ryan,
    The dialog that you've created isn't being directly called by the OI at all and shouldn't need to be included in the same directory as the OI for distribution. Since you are modifying the PreUUT of the default process model, you will give the path to the VI in that step, create a deployment and then manually copy the VI to the directory referenced in the step. The VI is considered a support file for the process model and is not related to the OI at all.
    Test Engineer - CTA

  • Runtime exec freezes: exec target is a executable .jar that requires stdin

    I am having a problem with the Runtime.getRuntime().exec methodology in the following scenerio:
    -- Exec.class is a program that uses a StreamGobbler to display stdout to the screen
    -- ReadInput.class is a program that requires the user enter information via the console, using stdin
    When I try to do this, the ReadInput.class locks up and freezes, presumably because its trying to use stdin which already has been gobbled up by the Exec.class ???
    Here is my code, for example, that I run with the following command (on Windows XP) :
    start.bat
    @echo off
    echo.
    javac *.java
    echo First, test the Exec.class to see if it works
    echo.
    java Exec "dir *.java"
    echo.
    echo Then, try to run a program that wants the stdin (click a key to continue)
    echo.
    pause>nul
    java Exec "java -cp . ReadInput"
    echo.
    echo (click a key to end)
    pause>nul
    Exec.java
    import java.util.*;
    import java.io.*;
    class StreamGobbler extends Thread
        InputStream is;
        String type;
        StreamGobbler(InputStream is, String type)
            this.is = is;
            this.type = type;
        public void run()
            try
                InputStreamReader isr = new InputStreamReader(is);
                BufferedReader br = new BufferedReader(isr);
                String line=null;
                while ( (line = br.readLine()) != null)
                    System.out.println(type + ">" + line);   
                } catch (IOException ioe)
                    ioe.printStackTrace(); 
    public class Exec
        public static void main(String args[])
            if (args.length < 1)
                System.out.println("USAGE: java Exec <cmd>");
                System.exit(1);
            try
                String osName = System.getProperty("os.name" );
                   System.out.println(osName);
                String[] cmd = new String[3];
                if( osName.equals( "Windows XP" ) )
                    cmd[0] = "cmd.exe" ;
                    cmd[1] = "/C" ;
                    cmd[2] = args[0];
                else if( osName.equals( "Linux" ) )
                    cmd[0] = "command.com" ;
                    cmd[1] = "/C" ;
                    cmd[2] = args[0];
                Runtime rt = Runtime.getRuntime();
                System.out.println("Execing " + cmd[0] + " " + cmd[1] + " " + cmd[2]);
                Process proc = rt.exec(cmd);
                // any error message?
                StreamGobbler errorGobbler = new
                    StreamGobbler(proc.getErrorStream(), "ERR");           
                // any output?
                StreamGobbler outputGobbler = new
                    StreamGobbler(proc.getInputStream(), "OUT");
                // kick them off
                errorGobbler.start();
                outputGobbler.start();
                // any error???
                int exitVal = proc.waitFor();
                System.out.println("ExitValue: " + exitVal);       
            } catch (Throwable t)
                t.printStackTrace();
    public class ReadInput {
       public static void main (String[] args) {
          //  prompt the user to enter their name
          System.out.print("Enter your name: ");
          //  open up standard input
          BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
          String userName = null;
          //  read the username from the command-line; need to use try/catch with the
          //  readLine() method
          try {
             userName = br.readLine();
          } catch (IOException ioe) {
             System.out.println("IO error trying to read your name!");
             System.exit(1);
          System.out.println("Thanks for the name, " + userName);
    }  // end of ReadInput classEdited by: sabre150 on 21-Jul-2011 11:26
    Added [ code] tags to make the code readable.

    When you call proc.getInputStream(), you are opening an InputStream in your app to read from the process's stdout.
    If that process "needs stdin", that is, if it normally runs by a user typing stuff at a terminal after it launches, then you have to call proc.getOutputStream() to get an OutputStream that your app can use to feed the process's stdin. So if you're trying to have your app read from the terminal (your app's stdin/System.in) and push that to the process you're launching, then after reading a line from System.in, your app would need to write that line to the OutputStream that you get from proc.getOutputStream().

  • Calling LrTasks.execute from within a plug in manager control

    I'm working on a Lightroom post-processing-filter plug in which has most of the functionality inside an executable that resides inside the plug in folder.
    The executable is responsible for doing the actual photo processing but is also responsible for obtaining and verifying that there is a valid license. This means that I need to let the user eneter an activation code, pass that to the executable which will talk to our server and get a license.
    I would like to handle that activation part from the plug-in manager dialog so I've added a top section (see following code) with a text field and a button and I've added code to call the executable when the button is pressed, but the executalbe is never called.
    Is what I'm trying to do impossible? Any workarounds?
    Thanks in advance!
    Eyal
    function PluginManager.sectionsForTopOfDialog( f, p )
              p.my_result = 0
    return {
              -- section for the top of the dialog
                        bind_to_object = p,
                        title = "MyPlug",
                        f:row {
                                  spacing = f:control_spacing(),
                                  f:static_text {
                                            title = LrView.bind( "my_result")
                                  f:push_button {
                                            width = 150,
                                            title = 'Run Exe',
                                            enabled = true,
                                            action = function()
                                                      command = '"' .. LrPathUtils.child(LrPathUtils.child( _PLUGIN.path, "mac" ), "MyTool" ) .. '" ' .. '-action check"'
                                                      quotedCommand = command  
                                                      p.my_result = LrTasks.execute( quotedCommand )
                                            end,
    end

    Thanks Rob,
    I'm afraid it didn't work for me. The code inside postAsyncTaskWithContext is not executed, as far as I could see. I didn't see any diagnostic messages.
    local LrView = import "LrView"
    local LrHttp = import "LrHttp"
    local bind = import "LrBinding"
    local app = import 'LrApplication'
    local LrPathUtils = import 'LrPathUtils'
    local LrTasks = import "LrTasks"
    local LrDialogs = import 'LrDialogs'
    local LrRecursionGuard = import 'LrRecursionGuard'
    PluginManager = {}
    function PluginManager.sectionsForTopOfDialog( f, p )
              p.my_result = 0
              local buttonGuard
    return {
              -- section for the top of the dialog
                        bind_to_object = p,
                        title = "MyPlug",
                        f:row {
                                  spacing = f:control_spacing(),
                                  f:static_text {
                                            title = LrView.bind( "my_result")
                                  f:push_button {
                                            width = 150,
                                            title = 'Do Something',
                                            enabled = true,
                                            action = function(button)
                                                      LrFunctionContext.postAsyncTaskWithContext(button.title,function (context)
                                                                p.my_result = 3
                                                      end)
                                            end,
    end

  • Has anyone seen the following on their WP? Message from webpage WARNING: Time Warner Cable Customer – Your Internet Explorer browser and  computer may be compromised by security threats. Call 844-600-6224 now for IMMEDIATE assistance.  OK

    Has anyone seen the following on their WP?
    Message from webpage
    WARNING: Time Warner Cable Customer –
    Your Internet Explorer browser and
    computer may be compromised by
    security threats. Call 844-600-6224 now for
    IMMEDIATE assistance.
    OK

    This sounds like a virus or malware program that has made its way onto your computer.  I would ensure you have the latest virus definitions on your computer and run a thorough (complete) scan of your system.  If this doesn't work, I would suggest  you use Microsoft's Malware Removal Tool.  You can download it at the link below.   Hope this helps.
    http://www.microsoft.com/security/pc-security/malware-removal.aspx

  • How TO CALL c++ EXECUTABLE FROM XI(VERY iMPORTANT)

    hI ALL
    pLEASE DO GIVE SUGGESTIONS AND DOCCUMENTATION LINKS  THAT <b>HOW TO CALL c++ EXECUTABLE FROM XI</b> .THIS IS VERY IMPORTANT AND YOUR HELP WILL BE REWARDED.
    WITH REGARDS
    SUBRATO KUNDU

    Hi Subrato,
    AFAIK you can call C / C++ methods in Java using Java Native  Interface (JNI).
    Please refer the following links for how to do the same.
    <a href="http://www.nag.com/IndustryArticles/CallingCLibraryRoutinesfromJava.pdf">For C:</a>
    <a href="http://www.javaworld.com/javaworld/javatips/jw-javatip17.html">For C++:</a>
    Regards,
    Ananth

  • Can I bundle flash player with a free downlodable gaming service that requires flash? Or can I download it for the user without making users to step out  from my product to a completely different flow?

    We have a free downloadable gaming service that requires flash player in order to operate properly.
    I am trying to figure our how can I make users who don't have flash to download it, but I don't want these users to leave my service and start a different download flow in a different website (adobe's) .
    I thought about several different options but don't know what would be considered legal or legit:
    1. download flash along with my product- this means I will have to add another offer screen to my installation? if so, it will damage my conversion.
    2. downloading flash for the user without consent- probably will result with AV alerts
    3. open an iframe for users who don't have flash where I'll ask users to download flash--> that still will redirect users to adobe website to complete the process, which will damage my usage...
    any comments on the above or additional ideas?
    Thanks
    Tom

    Unfortunately, I don't think that our license currently grants the rights that you're looking for.  We do allow for the inclusion of original installers on physical media to address the situation of installation where an Internet connection is not guaranteed to be available; however, the Adobe download center serves an important role in the cost-recovery efforts for the continued development, maintenance and distribution of Flash Player, which is a tremendously expensive undertaking. I think it's unlikely that we would agree to allow the inclusion of Flash Player installers in scenarios where the host installer requires an internet connection.
    Here is a brief summary of the rights granted by this license:
    Licensee is permitted to distribute Adobe Web Players to multiple clients in a closed intranet environment.
    Licensee is permitted to distribute Adobe Web Players to multiple end-users by including the Player installers on CDs, DVDs or other physical media.
    Usage of Adobe Web Players is only permitted for supported platforms; usage rights on non-PC devices or embedded systems are not granted by this license.
    Licensee must use the installers as-is without modification.
    Licensees, at their discretion, are entitled to display the Flash Enabled and/or Shockwave logos on products or intranet sites according to the Style Guide.
    On the plus side, you don't have to worry about serving your users outdated or vulnerable Flash Player versions, and keeping those embedded copies constantly updated would be a lot of overhead.
    Chrome and Internet Explorer on Win8+ always have Flash Player built-in, so those users are generally going to be in good shape (and you shouldn't redirect them to the download anyway, because we'll just give them a message about it already being installed).  IE11 eliminates JavaScript support for conditional comments and various other methods for fingerprinting and targeting IE with IE-specific logic, so you'll want to pay attention to that experience, particularly on Win8+ (i.e. your detection logic might need to be tweaked on this config, if it's depending on isMSIE to do the correct thing... there is a lot of busted Flash detection in the world on this target at the moment...)
    For NPAPI browsers (Safari, Firefox), users are going to have to close the browser to complete the install process, so I don't think that offering the download in an iframe is going to buy you much, and would probably make it more difficult to complete the installation steps, ultimately doing more harm than good. 
    In the case of Safari, the installer re-launches Safari at the end of the installation process, and it does so without reopening all of the previously opened tabs.  I'm hoping that we won't have to live with that issue much longer, but I want to be transparent about the impact to your user experience.  Safari users are going to lose the tab with your site in it during the installation process no matter what. 
    There's also an install mechanism called Express Install, which you can invoke automatically when you detect that Flash Player is not installed, or is below the version that you require.  Off the top of my head, I don't know exactly what happens in every possible install scenario (patch update vs. feature update, by OS and browser).  I think some configs require you to restart and others like IE on Windows don't.  It's all dictated by browser limitations, which are constantly moving targets. 
    In short, we recommend that everyone use SWFObject2 for detecting Flash from JavaScript, and they make it pretty easy to invoke upgrades via ExpressInstall.
    SWFObject: Javascript Flash Player detection and embed script | deconcept

Maybe you are looking for