1. 程式人生 > >關於NSIS指令碼操作靜默安裝第三方程式+判斷電腦位數

關於NSIS指令碼操作靜默安裝第三方程式+判斷電腦位數

在NSIS指令碼中,呼叫外部程式的方法有ExecShell以及ExecWait:
ExecShell
使用 ShellExecute [譯者注: Windows 的外殼關聯] 執行指定的程式。注意: “動作” 通常為 “open”, “print” 等等,也可以是一個空字串來使用預設動作。引數和顯示型別是可選項。 $OUTDIR 用於指定工作路徑。如果該命令不能被執行則會置一個錯誤標記。

動作 命令 [引數] [SW_SHOWNORMAL | SW_SHOWMAXIMIZED | SW_SHOWMINIMIZED | SW_HIDE]
ExecShell "open" "$INSTDIR
\readme.txt"

ExecWait
執行一個指定的程式並且等待執行處理結束。更多資訊請檢視 Exec 。當程式執行返回一個非零錯誤程式碼或者當產生錯誤時,如果沒有指定 “使用者變數(返回程式碼)” 則 ExecWait 會放置一個錯誤標記。如果指定了 “使用者變數(返回程式碼)” 則 ExecWait 會把變數設為返回程式碼(並且僅當產生錯誤時放置一個錯誤標記;如果產生錯誤則該使用者變數的內容為未指定)。注意:如果該命令包含空格,你要用引號來把他們包括起來。例如: ExecWait ‘”$INSTDIR\command.exe” 引數’ 。如果你不用引號括起來則在 Windows 9x 下 不 正常或丟失引數。

命令 [使用者變數(退出程式碼)]
ExecWait '"$INSTDIR\someprogram.exe"' $0

這兩條命令的區別在於:
1、ExecWait會等待執行處理結束,更為穩妥;
2、ExecShell可以設定安裝選項,更為靈活。如:

    //這裡我呼叫了外部的vc_redist.x64.exe程式,這是一個安裝程式,加"/quiet"引數後實現了靜默安裝外部程式
   ExecShell "" "$INSTDIR\vc_redist.x64.exe" "/quiet"
安裝選項
    </package | /i> <Product.msi>
安裝或配置產品 /a <Product.msi> 管理安裝 - 在網路上安裝產品 /j<u|m> <Product.msi> [/t <Transform List>] [/g <Language ID>] 公佈產品 - m 公佈到所有使用者,u 公佈到當前使用者 </uninstall | /x> <Product.msi | ProductCode> 解除安裝產品 顯示選項 /quiet 安靜模式,無使用者互動 /passive 無人蔘與模式 - 只顯示進度欄 /q[n|b|r|f] 設定使用者介面級別 n - 無使用者介面 b - 基本介面 r - 精簡介面 f - 完整介面(預設值) /help 幫助資訊 重新啟動選項 /norestart 安裝完成後不重新啟動 /promptrestart 必要時提示使用者重新啟動 /forcerestart 安裝後始終重新啟動計算機 日誌選項 /l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <LogFile> i - 狀態訊息 w - 非致命警告 e - 所有錯誤訊息 a - 操作的啟動 r - 操作特定記錄 u - 使用者請求 c - 初始使用者介面引數 m - 記憶體不足或致命退出資訊 o - 磁碟空間不足訊息 p - 終端屬性 v - 詳細輸出 x - 額外除錯資訊 + - 擴充套件到現有日誌檔案 ! - 每一行重新整理到日誌 * - 記錄所有資訊,除了 v 和 x 選項 /log <LogFile> 與 /l* <LogFile> 相同 更新選項 /update <Update1.msp>[;Update2.msp] 應用更新 /uninstall <PatchCodeGuid>[;Update2.msp] /package <Product.msi | ProductCode> 刪除產品的更新 修復選項 /f[p|e|c|m|s|o|d|a|u|v] <Product.msi | ProductCode> 修復產品 p - 僅當檔案丟失時 o - 如果檔案丟失或安裝了更舊的版本(預設值) e - 如果檔案丟失或安裝了相同或更舊的版本 d - 如果檔案丟失或安裝了不同版本 c - 如果檔案丟失或較驗和與計算的值不匹配 a - 強制重新安裝所有檔案 u - 所有必要的使用者特定登錄檔項(預設值) m - 所有必要的計算機特定登錄檔項(預設值) s - 所有現有的快捷鍵方式(預設值) v - 從源執行並重新快取本地安裝包 設定公共屬性 [PROPERTY=PropertyValue] 請查閱 Windows (R) Installer SDK 獲得有關命令列語法的其他文件。

判斷電腦的位數,操作實現很簡單:

//這個記得一定得有,應該是定義了IF巨集之類的,當我未加該條語句時,在IF處報錯
!include "x64.nsh"

Section
  ${If} ${RunningX64}
   //電腦為64為作業系統時,呼叫相應的外部安裝程式
   ExecShell "" "$INSTDIR\vc_redist.x64.exe" "/quiet"
  ${Else}
   ExecShell "" "$INSTDIR\vc_redist.x86.exe" "/quiet"
  ${EndIf}
SectionEnd

相關推薦

關於NSIS指令碼操作靜默安裝第三方程式+判斷電腦位數

在NSIS指令碼中,呼叫外部程式的方法有ExecShell以及ExecWait: ExecShell 使用 ShellExecute [譯者注: Windows 的外殼關聯] 執行指定的程式。注意:

bat指令碼批量靜默安裝程式

1、你最關心的 如何靜默安裝 “/q” 用於安裝程式時可以靜默安裝 start /wait %%i /q 其中“/wait”是等上一個程式執行結束後再接續執行下一個 2、正文開始 用bat指令碼自動安裝程式,部署一些環境 順便學習了bat指令

Python 讀寫操作Excel —— 安裝第三方庫(xlrd、xlwt、xlutils)

保存數據 下載 實用 第三方 直接 install pytho 方法 xls 數據處理是 Python 的一大應用場景,而 Excel 則是最流行的數據處理軟件。因此用 Python 進行數據相關的工作時,難免要和 Excel 打交道。 如果僅僅是要以表單形式保存數據,可

NSIS教程(5): 靜默安裝

常用的靜默安裝有2種: 1. 在指令碼中加入SilentInstall 和 SilentUninstall 命令 2. 在程式啟動引數里加 /S 引數(區分大小寫) 要判斷安裝、解除安裝程式

怎麼編寫簡單程式判斷電腦是大端cpu還是小端cpu

電腦的cpu有兩種,大端和小端cpu。 大端cpu: 所謂的大端,是指資料的高位元組,儲存在記憶體的低地址中,而資料的低位元組,儲存在記憶體的高地址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理:地址由小向大增加,而資料從高位往低位放; 小端: 所謂的小端,是指資料的

NSIS安裝過程中判斷程式是否執行中,FindProcDLL和KillProcDLL

FindProcDLL::FindProc {process_name} 返回值: 0 - 未找到 1 - 找到 KillProcDLL::KillProc {process_name} 0

Oracle11g靜默安裝dbca,netca報錯處理--直接跟換操作系統

update npr 處理 grep gist net flags button been 最近給一個客戶安裝oracle 11gr2 概述: 操作系統:linux 32位操作系統 [oracle@nbsrfx response]$ uname -aLinux nb

linux CentOS7最小化安裝環境靜默安裝Oracle11GR2數據庫(安裝操作系統環境)

安裝環境 min htm .html ces 51cto done c89 設置 最小化安裝 linux CentOS7 我使用的鏡像包:CentOS-7-x86_64-Minimal-1708.iso通過方向鍵選擇:install centos 7回車 直接點擊:cont

【python】指令碼批量安裝第三方

編寫指令碼py程式 新建批量安裝的檔案 libsinstall.py import os # 新增需要安裝的擴充套件包名稱進去 libs = {"pillow" , "sklearn" , "numpy" , "pandas"} try: for lib in libs:

VBS 開啟第三方程式操作計算機關機重啟

效果動畫演示    實現步驟 第一步: 建立視窗==>拖拽4個按鈕,1個文字框,1個標籤 第二步:按鈕“電腦關機”事件 msgResult = MsgBox ("請確認關閉所有程式,是否確認關機?", 65, "系統

遞迴、os.walk、內建函式、lambda、hashlib模組、md5加密、python安裝第三方模組、操作mysql資料庫

#遞迴就是函式自己調自己,一般遞迴都會有在什麼情況下結束遞迴,一業可以有結束條件#遞迴最多死迴圈999次,遞迴不能設定次數# count=0# def abc():# global count# count+=1# print(count)# print('abc')#

CentOS 6.7 靜默安裝Oracle 11g R2 詳細操作總結

$ less /opt/database/response/db_install.rsp |grep -v "#"|grep -v "^$"oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v

搭建共享yum源 | 虛擬機器測試yum源 | 掛載命令(指令碼開機掛載) | rpm安裝第三方軟體 | rpm的依賴性問題解決

####真機的yum源由於有映象可以配置,然後就能從yum源裡面安裝軟體,而虛擬機器裡面沒有yum源,此時我們就需要配置一個共享yum源,讓虛擬機器也可以從yum源獲取軟體#########一,搭建共享

Android 靜默安裝程式(在後臺偷偷安裝apk)

一、概述: 1、應用場景:電子市場、流氓軟體 2、使用手段:偷偷下載,偷偷安裝,偷偷啟動,偷偷刪除 二、如何實現: 1、使用命令實現 adb push C:\Users\Administrator\Desktop\gameview.apk data

程式打包 之 NSIS指令碼

這段時間負責公司的程式的打包,於是就學習了一下NSIS的指令碼,結果是英文的,所以就有了翻譯一下,順便學習一下的想法。 編寫NSIS程式打包指令碼,只需要用一個文字編輯器,最好是帶有行號的,這樣會有助於讀懂編譯錯誤提示。下面開始學習打包。 1. NSIS指令碼的基本結構 instal

NSIS 解除安裝安裝檢測程式是否在執行

如果我們要安裝或升級的程式正在執行,檔案肯定會替換失敗,以下程式碼可以提示使用者結束正在執行的程式。 需要使用外掛FindProcDLL.dll,下載路徑:http://nsis.sourceforge.net/FindProcDLL_plug-in   processwork.dll htt

【Android應用開發】-(18)靜默方式實現批量安裝解除安裝應用程式

     前段時間做了一個批量安裝解除安裝應用程式的小應用,由於安裝解除安裝應用程式的部分API是隱藏的,所以必須在ubuntu下下載Android系統原始碼,並編譯之後使用MM命令編譯生成APK檔案,其實也難。思路是這樣的,在XX/packages/apps目錄下有一個Pa

NSIS 建立互斥防止安裝程式重複執行

Function .onInit InitPluginsDir   ;建立互斥防止重複執行   System::Call 'kernel32::CreateMutexA(i 0, i 0, t "WinSnap_installer") i .r1 ?e'   Pop $R0

NSIS 靜默安裝 以及 在安裝軟體時檢測軟體是否啟動

NSIS 靜默安裝vc++2013 Section vc SetOutPath "$INSTDIR" SetOverwrite on ExecWait '$INSTDIR\vc2013_x86.

NSIS安裝打包程式的版本比較方便做後續邏輯處理

因為當時公司的專案打包解除安裝前期出現了一些問題,只能做個補丁來彌補,考慮到不影響後期的專案,分隔版本號,以1.0.12為分割線,判斷new or old,然後分別做出不同的解除安裝邏輯。 1.VersionCompare: *比較版本數字 語法: ${VersionCompare} "[