如何使用nsis脚本将exe文件捆绑到另一个exe文件中

时间:2016-12-19 13:20:21

标签: windows windows-installer installer nsis

我有一个名为sample.exe的安装程序文件。这个exe文件将有一些必须定义的组件,如端口号,安装目录等。我必须将此sample.exe文件捆绑在另一个名为test.exe的安装程序中。因此,当我尝试安装test.exe时,它还应该安装sample.exe。我可以看到在nsis中有实现这个的选项,但是如何在安装test.exe时提供用于输入端口,sample.exe的目录路径的选项?我是nsis的初学者,任何参考都是示例脚本会帮助我很多。提前谢谢。

2 个答案:

答案 0 :(得分:0)

您需要创建自定义(安装程序)页面,并输入这些值。

使用nsDialogs(推荐):http://nsis.sourceforge.net/Docs/nsDialogs/Readme.html

没有确切的解决方案,因为您的规范非常模糊,而是检查示例并使用它们提供的代码片段。

答案 1 :(得分:0)

您通常使用目录页面让用户选择安装目录。可以使用nsDialogs插件在自定义页面上记录非标准用户输入:

Name "Foo"
OutFile "TestSetup.exe"
RequestExecutionLevel admin
InstallDir "$ProgramFiles\Test"
!define DEFAULTPORT 666

!include nsDialogs.nsh

Var MyPort
Var PortEdit

Function .onInit
StrCpy $MyPort "${DEFAULTPORT}"
FunctionEnd

Page Directory
Page Custom MyPageCreate MyPageLeave
Page InstFiles


Function MyPageCreate
nsDialogs::Create 1018
Pop $0

${NSD_CreateLabel} 0u 10% 20u 12u "Port: "
Pop $0

${NSD_CreateNumber} 20u 10% 40u 12u "$MyPort"
Pop $PortEdit

nsDialogs::Show
FunctionEnd

Function MyPageLeave
${NSD_GetText} $PortEdit $MyPort
FunctionEnd

Section
SetOutPath $InstDir
File "Sample.exe"

; Write the chosen port to a config file:
WriteIniStr "$InstDir\Config.ini" "Network" "Port" "$MyPort"
SectionEnd