请大家帮忙解决:在安装程序结束之前执行一个 .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
[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.如何在安装过程中获得该执行文件的路径并执行它
2.根据该 .exe 文件执行后的返回结果确定是继续安装还是退出安装(如何实现)
生成的文件为 .iss 文件那它是否提供什么shell方法。
!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
但是:在SetUp.exe 中要求输入数据库信息进行连接数据库(由SetUp.exe程序来完成),
如果成功就返回一个参数让 安装程序继续下去,
否则,返回一个参数让安装程序终止,(那么,怎么实现 这个参数的传递 和 安装程序对这个参数的判断 呢?)