在自己做項目的時候,遇到一個需要打包的程序。該程序需要用到WinGraphviz插件。在項目中,所用到的插件是以msi文件安裝成功的,因此將程序打包之后,移植到另外一台電腦是,需要自己手動安裝該msi插件。如何實現在安裝程序的時候,自動安裝該插件。在查了很多資料之后,找到了如下的解決方法。程序代碼如下:
[Run]
Filename: "{app}\msiexec.exe";Parameters: "/i""{src}\WinGraphviz_v1.02.24.msi"
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
要運行這個程序,需要自己添加 msiexec.exe(點擊下載)文件,該文件是windows下安裝msi的一個文件,其中具體參數如下:
msi軟件包所有安裝參數如下:
msiexec /Option <Required Parameter> [Optional Parameter]
安裝選項
</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]
