【问题标题】:overwrite files created by emmbeded installer覆盖嵌入式安装程序创建的文件
【发布时间】:2015-06-01 21:25:02
【问题描述】:

所以我将两个安装程序嵌入到使用 nsis 创建的安装脚本中,整个过程应该先安装一个程序,然后再安装另一个程序,然后用新版本覆盖第二个安装程序创建的三个文件。问题是这三个文件是在第二个安装程序开始工作之前创建的。如何确保这些文件仅在第二个安装程序完成工作后才创建?

`

!include "MUI2.nsh"


; The name of the installer
Name "ADIS"

RequestExecutionLevel user

; The file to write
OutFile "ADIS.exe"
Unicode true
; The default installation directory
InstallDir "C:\ADIS"

 !insertmacro MUI_PAGE_WELCOME
 !insertmacro MUI_PAGE_COMPONENTS
 !insertmacro MUI_PAGE_DIRECTORY
 !insertmacro MUI_PAGE_INSTFILES
 !insertmacro MUI_PAGE_FINISH


 !insertmacro MUI_LANGUAGE "Spanish"


 ;--------------------------------

 ; The stuff to install
 Section ""

  ; Set output path to the installation directory.
  SetOutPath $INSTDIR  

  RMDir /r $INSTDIR
 SectionEnd

 SectionGroup "instaladores"
 Section "Firebird"  
  ExecWait "Firebird\Firebird-2.5.4.26856_0_Win32.exe"

 SectionEnd

 Section "Cliente"a
  ExecWait "Cliente\setup.exe"
 SectionEnd

 SectionGroupEnd

 Section "Actualiza"
  ; Put file there
  ;File Nvo\ADIS.exe
  ;File Nvo\ADIS.ICO
  ;File Nvo\ADIS.GDB

  File /r "Nvo\*"


  SectionEnd`

【问题讨论】:

  • “Cliente\setup.exe”是 NSIS 安装程序吗?你创造的吗?
  • 不,“Cliente\setup.exe”是我软件的旧安装套件,它不是 NSIS 安装程序,它是用 delphi 制作的

标签: installation nsis


【解决方案1】:

您可能应该静默运行“Cliente\setup.exe”。大多数安装程序都有一个可以在命令行上使用的静默开关,有些还提供一个等待开关,这样即使安装程序使用子进程,您也可以等待。

如果您在文件命令之前添加一个 MessageBox 并且在其他安装程序完成之前不单击它会发生什么?

【讨论】:

  • 谢谢!这样做的诀窍,只有在用户单击 MessageBox 上的确定按钮后才会创建文件。现在唯一的问题是并非所有用户都会等到安装程序完成才能单击消息。我试图像ExecWait "Cliente\setup.exe" /SP- /SILENT 这样运行“Cliente\setup.exe”,但它在编译时出现错误。我认为这是因为它不支持静音模式。有任何建议,以便在需要文件之前停止创建文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 2014-07-11
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多