请大家帮忙解决:在安装程序结束之前执行一个 .exe 程序,如何写代码实现附部分代码:
[Setup]
AppName=星阳软件
AppVerName=星阳软件1.0
AppPublisher=广州星阳科技
DefaultDirName={pf}\我的程序
DefaultGroupName=星阳软件
OutputDir=C:\Documents and Settings\Administrator\桌面
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes[Languages]
Name: "chinese"; MessagesFile: "compiler:Default.isl"[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked[Files]
Source: "D:\Projects\SetUp\SetUp\obj\Debug\SetUp.exe"; DestDir: "{app}"; Flags: ignoreversion; 注意:不要在任何共享系统文件上使用“Flags: ignoreversion”[Icons]
Name: "{group}\星阳软件"; Filename: "{app}\SetUp.exe"
Name: "{userdesktop}\星阳软件"; Filename: "{app}\SetUp.exe"; Tasks: desktopicon[Run]
Filename: "{app}\SetUp.exe"; Description: "{cm:LaunchProgram,星阳软件}"; Flags: nowait postinstall skipifsilent

解决方案 »

  1.   

    该 .exe 程序是安装产生的可执行文件,现在问题有二:
    1.如何在安装过程中获得该执行文件的路径并执行它
    2.根据该 .exe 文件执行后的返回结果确定是继续安装还是退出安装(如何实现)
      

  2.   

    用 Inno Setup  做的生成的文件为 .iss 文件
      

  3.   

    to 用 Inno Setup  做的
    生成的文件为 .iss 文件那它是否提供什么shell方法。
      

  4.   

    希望大家帮忙探讨一下,说实话,我不太懂这些代码是怎么执行的如果能调用 安装过程中执行的 .EXE 文件的返回结果并进行判断,决定安装程序是返回还是进行下去如果用NSIS 代码的话,是怎样去实现?
      

  5.   

    !define PRODUCT_NAME "SYSETUP"
    !define PRODUCT_VERSION "1.0"
    !define PRODUCT_PUBLISHER "My company, Inc."
    !define PRODUCT_WEB_SITE "http://www.mycompany.com"
    !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\SetUp.exe"
    !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
    !define PRODUCT_UNINST_ROOT_KEY "HKLM"SetCompressor lzma; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
    !include "MUI.nsh"; MUI 预定义常量
    !define MUI_ABORTWARNING
    !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
    !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"; 欢迎页面
    !insertmacro MUI_PAGE_WELCOME
    ; 组件选择页面
    !insertmacro MUI_PAGE_COMPONENTS
    ; 安装目录选择页面
    !insertmacro MUI_PAGE_DIRECTORY
    ; 安装过程页面
    !insertmacro MUI_PAGE_INSTFILES
    ; 安装完成页面
    !define MUI_FINISHPAGE_RUN "$INSTDIR\SetUp.exe"
    !define MUI_FINISHPAGE_RUN_PARAMETERS "cccccccccc"
    !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\SetUp.exe"
    !insertmacro MUI_PAGE_FINISH; 安装卸载过程页面
    !insertmacro MUI_UNPAGE_INSTFILES; 安装界面包含的语言设置
    !insertmacro MUI_LANGUAGE "SimpChinese"; 安装预释放文件
    !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
    ; ------ MUI 现代界面定义结束 ------Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
    OutFile "Setup.exe"
    InstallDir "$PROGRAMFILES\SYSETUP"
    InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"
    ShowInstDetails show
    ShowUnInstDetails showSection "MainSection" SEC01
      SetOutPath "$INSTDIR"
      SetOverwrite off
      File "D:\Projects\SetUp\SetUp\bin\Debug\SetUp.exe"
      CreateDirectory "$SMPROGRAMS\SYSETUP"
      CreateShortCut "$SMPROGRAMS\SYSETUP\SYSETUP.lnk" "$INSTDIR\SetUp.exe"
      CreateShortCut "$DESKTOP\SYSETUP.lnk" "$INSTDIR\SetUp.exe"
    SectionEndSection "MoreSection" SEC02
      SetOverwrite ifnewer
      File "D:\Projects\SetUp\SetUp\bin\Debug\SetUp.exe"
      File "C:\Documents and Settings\Administrator\桌面\安装程序相关\安装程序.txt"
      Exec  "$INSTDIR\SetUp.exe"
    SectionEndSection -Post
      WriteUninstaller "$INSTDIR\uninst.exe"
      WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\SetUp.exe"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\SetUp.exe"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
      WriteRegStr HKLM "software\Sinya\ABP" "AppDesign" "nsis"
    SectionEnd#-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--#; 区段组件描述
    !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
      !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} ""
      !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "示例文件"
    !insertmacro MUI_FUNCTION_DESCRIPTION_END/******************************
     *  以下是安装程序的卸载部分  *
     ******************************/Section Uninstall
      Delete "$INSTDIR\uninst.exe"
      Delete "$INSTDIR\安装程序.txt"
      Delete "$INSTDIR\SetUp.exe"
      Delete "$INSTDIR\SetUp.exe"  Delete "$DESKTOP\SYSETUP.lnk"
      Delete "$SMPROGRAMS\SYSETUP\SYSETUP.lnk"  RMDir "$SMPROGRAMS\SYSETUP"  RMDir "$INSTDIR"  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
      DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
      SetAutoClose true
    SectionEnd#-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--#Function un.onInit
      MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2
      Abort
    FunctionEndFunction un.onUninstSuccess
      HideWindow
      MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"
    FunctionEnd
      

  6.   

    在安装程序中执行 .EXE 程序的时候,如何由 .EXE 将参数传给安装程序,并有安装程序根据此参数决定是否继续进行安装? 可以用楼上的 代码作为示例,请大家帮下忙,我在此谢谢了!
      

  7.   

    Filename: "{app}\SetUp.exe"; Description: "{cm:LaunchProgram,星阳软件}"; Flags: nowait postinstall skipifsilent这一条不就是要运行程序吗
      

  8.   

    对,就是在这个时候运行 SetUp.exe 程序(运行该程序的时候要暂停安装程序,等待参数输入),
    但是:在SetUp.exe 中要求输入数据库信息进行连接数据库(由SetUp.exe程序来完成),
    如果成功就返回一个参数让 安装程序继续下去,
    否则,返回一个参数让安装程序终止,(那么,怎么实现   这个参数的传递   和 安装程序对这个参数的判断  呢?)