2013-12-20 136 views
0
在其他的exe和提取裏面的EXE
!include "MUI2.nsh" 
!include "WordFunc.nsh" 
# define the name of the installer 
outfile "simple installer.exe" 


!macro installVddk 

MessageBox MB_OKCANCEL "a.exe is required for installing agent.Do you wish to install it?" IDOK lblinst IDCANCEL abort_inst 

abort_inst: 
      ABORT 
      GoTo lblinst 


lblinst: 
SetOutPath $EXEDir 
;MessageBox MB_OK $OUTDIR 
File a.exe 
ExecWait "a.exe" $1 
!macroend 

# default section 
section " Agent (required)" main_section 
sectionEnd 

Function .onInit 
    !insertmacro installVddk 
FunctionEnd 

我的問題是:NSIS腳本:嵌入安裝

1.I必須保持在A.EXE相同的目錄在編譯過程中NSI腳本。 如何指定可以從中獲取a.exe的位置,如果它是非NSI腳本的目錄?

2.如果File a.exe命令解壓exe文件,其中的代碼捆綁EXE,編譯過程中,請您及時幫助

+0

它看起來對我來說,在你的榜樣B.EXE和c .exe有點混淆,也許在你的現實生活中有問題?你能否更新你的問題以清楚地顯示哪個文件被引用以及問題出在哪裏?也許你可以告訴我們你的代碼的一部分? –

+0

嗨@RolandBärBär, 感謝您的回覆,是的,我弄亂了罐子的名字。道歉。 讓我試着正確地解釋我的問題: 1.我有一個NSI腳本來創建一個exe(agentInstaller.exe) 2.我想修改該NSI腳本來嵌入在agentInstaller中的另一個exe(a.exe)。 exe執行 3.執行agentInstaller.exe時,它應該向用戶顯示消息「是否要安裝a.exe?」 如果用戶說OK,那麼a.exe應該從agentInstaller.exe中提取(在同一個目錄下),並且應該是 被執行。 – user2306856

+0

請參考問題的主要部分 - 編輯其代碼 – user2306856

回答

0

A.EXE不必在同一文件夾與.nsi編譯腳本的時候,但你必須在申報「文件」的完整路徑 - 考慮以下幾點:

SetOutPath $EXEDir 
    File "C:\A_folder\a.exe" 
    ExecWait "$EXEDir\a.exe" 
  1. SetOutPath你分不清哪裏部署的文件(S),當你運行安裝程序
  2. 然後用File你告訴NSIS的文件(S)的收官之(這將隨後部署OFC期間使用)