關於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} "[