原本就對整合光碟的製作原理就很好奇,用google橋了好幾個Keywords才找到重點資訊,最先是以整合光碟嘗試,後來欲求不滿,改追自動安裝軟體。以msiexec /i {Package}安裝沒辦法裝,後來才找到 /q 參數(代表Slient Install)。
例如,在微軟的各種套件安裝封包中,可在參數加入:
/Q or /S = 無訊息安裝
/R:N = 安裝完畢後,不重新啟動
Microsoft Windows Installer - MSIEXEC參數說明:
Syntax
Install
MSIEXEC /i package options
Uninstall
MSIEXEC /x package options
Advertise to current user
MSIEXEC /ju package options [/t Transform_List | /g LanguageID]
Advertise to all users
MSIEXEC /jm package options [/t Transform_List | /g LanguageID]
Administrative install - install on the network.
MSIEXEC /a package
Apply a patch to an installed Admin image
MSIEXEC /p patchPKG /a package
較常用到的Slient Install Parameter:
/q , /qn No UI.
/qb Basic UI.
/qb! Basic UI with no cancel button.
/qr Reduced UI. A modal dialog box is displayed at the end of the install.
/qf Full UI. A modal dialog box is displayed at the end of the install.
/qn+ No UI. However, a modal dialog box is displayed at the end of
the installation.
/qb+ Basic UI. A modal dialog box is displayed at the end of
the installation. If you cancel the installation,
a modal dialog box is not displayed.
/qb- Basic UI with no modal dialog boxes.
其餘說明可以參考 Msiexec,微軟官方網站的 Msiexec 說明。
甚至是搭配 runonce 的登錄檔來做重新開機之後的首次執行,將登錄檔內容全部設為安裝程式路徑。例: 這是 runones要去執行的動作
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]
"1"="C:\\winapps\\acrobat\\setup.exe -s"
"2"="C:\\winnt\\regedit.exe /s C:\\winapps\\reg\\modifs.reg"
"3"="C:\\winnt\\regedit.exe /s C:\\winapps\\reg\\supp.reg"
"4"="msiexec /i C:\\winapps\\msxml3.msi /qr"
"5"="msiexec /i C:\\winapps\\msxml4.msi /qr"
(以下略..)
大部分的安裝套件必須轉成 msi 安裝檔才能使用其參數。拿Notepad++的安裝檔來說
在command-line模式下鍵入:
msiexec /i npp3.9.exe
是無法執行的,會造成錯誤。但若是輸入:
npp3.9.exe /S
這樣就可以安靜模式安裝,因為notepad++是使用NSIS包裝的。對於 msi 檔則 msiexec /i 可省略。可參考 www.installsite.org 有關於Windows Installer的資訊。
若是使用InstallShield包裝程式,可參考InstallShield in Silent Mode的說明:
簡單的介紹所謂InstallShield的iss檔(Response File)使用方法:
To generate the silent script (.iss) use:
setup.exe /r /f1"c:\\\mysetup\\\mysetup.iss"
To run the silent mode script use:
setup.exe /s /f1"c:\\\mysetup\\\mysetup.iss"
MSI自動安裝設置,請參考以下幾篇文章
- Silent Installations
- Traditional Silent Mode for InstallScript MSI Installations
- InstallShield Developer Tip: User Interface Levels for MSI Installations
NullSoft Install System的包裝軟件請使用 /S (大寫S) 來進行 Slient Mode 安裝,參考 NSIS的Doc.。各種其他包裝軟體的Silent Mode使用方式,請 參考。
Windows XP整合光碟製作,請參用下列兩種軟體。
- nLite
- Windows Unattended CD Creator
其中nLite的品質不錯,不過還是沒法找到到底他的Patch是如何做的?因為也沒有OpenSource所以也無跡可尋。 其步驟是,你必須到 微軟的下載中心下載安全性更新檔,然後在包裝時,你可以選擇你要包進光碟的東西,可以刪減,也能自己外加驅動程式,量身訂做你自己的安裝光碟,連序號都可以幫你輸入。
軟體安裝的話,直接在指令列那以上述方法下指令即可。或是使用 WPI 這類圖形化程式加入 Script。關於安裝資訊的自動輸入可參考 Answer File自動安裝程序。
在製作整合光碟時,把批次檔複製到 C:\XPCD\$OEM$\$1\install\ (並且在winnt.sif文件的[GuiRunOnce]字段下加入你的批次檔路徑),[GuiRunOnce]可以手動加在winnt.sif文件中的最下面,而批處理文件的路徑可以寫成:%SYSTEMDRIVE%\INSTALL\*.CMD。例如:
[GuiRunOnce]
"%SYSTEMDRIVE%\INSTALL\HOTFIXES.CMD"
關於GuiRunOnce可參考微軟的說明文件。不過基本上,產生出來的XP光碟映像檔,大多都會逼近普通CD-R光碟的容量極限了,所以也不太可能塞太多安裝檔,除非你使用DVD光碟。另一個方法是另外燒一片光碟,利用Autorun.ini來驅動批次檔來安裝程式,可使用 Autorun Generator 之類的軟體來幫你產生。
最簡單的Autorun.ini文件只有2到3行,基本格式如下:
[autorun] (表示autorun部分開始)
open=*.exe (表示自動運行文件的位置、文件名)
icon=*.ico (表示圖標文件的位置、文件名)
編寫完Autorun.ini檔案之後,將它和所需檔案燒到光碟的根目錄下即可。這裡來看一個實例:我們要求在光碟載入時使用根目錄下的Setup.ico作為光碟圖示,自動執行Start.exe文件,這時Autorun.ini文件可編寫如下:
[autorun]
open=start.exe
icon=setup.ico
接下來我們需要將所需文件燒到光盤相應的位置,剩下步驟和製作普通的光碟相同,這裡不再贅述。燒錄完畢之後我們可將光碟放入光碟機,這時對應的光碟機圖示變成Setup.ico,系統自動執行Start.exe。Ref:2002光碟燒錄全書
另外,新增驅動程式的方法,可參考微軟官方的如何新增 OEM 隨插即用驅動程式至 Windows XP。
留言列表