將 SQL Server 2005 SP2 整合進原始安裝檔(Slipstream),可建立含 SP2 的整合安裝映像,避免安裝後再打補丁。網路上流傳的腳本常有錯誤,經實測修正後可正常運作,整合後開發版/企業版 32 位安裝包約 855 MB (isz 格式)。
/////////////////////////////////////////////////
// Slipstreaming MSSQL Server 2005 SP2
// Author : Zealic (2007-03-19 v1.01)
// Modified: Hollis Yao (2008-01-15 v2.00)
/////////////////////////////////////////////////
var swap = "D:\\SWAP";
var sqldir = "D:\\MSSQL";
var sp2 = "D:\\SP2";
var server = sqldir + "\\Servers\\Setup";
var tools = sqldir + "\\Tools\\Setup";
var log = "D:\\install.log";
install();
function install() {
WScript.Echo("Slipstreaming MSSQL Server 2005 SP2, please wait...");
try {
installServers();
// exec("RD /Q /S " + swap);
installTools();
sucess();
} catch(e) {
WScript.Echo(e.name + " : " + e.message);
fail();
}
}
function installServers() {
testRun("XCOPY /Y /H " + sp2 + "\\*.msi " + server);
testRun('msiexec /quiet /a "' + server + '\\sqlrun_as.msi" TARGETDIR="' + swap + '" /L*vx "' + log + '"');
testRun('msiexec /quiet /a "' + server + '\\sqlrun_dts.msi" TARGETDIR="' + swap + '" /L*vx "' + log + '"');
testRun('msiexec /quiet /a "' + server + '\\sqlrun_ns.msi" TARGETDIR="' + swap + '" /L*vx "' + log + '"');
testRun('msiexec /quiet /a "' + server + '\\sqlrun_rs.msi" TARGETDIR="' + swap + '" /L*vx "' + log + '"');
testRun('msiexec /quiet /a "' + server + '\\sqlrun_sql.msi" TARGETDIR="' + swap + '" /L*vx "' + log + '"');
testRun('msiexec /quiet /a "' + swap + '\\sqlrun_as.msi" /p "' + sp2 + '\\sqlrun_as.msp" /L*vx "' + log + '"');
testRun('msiexec /quiet /a "' + swap + '\\sqlrun_dts.msi" /p "' + sp2 + '\\sqlrun_dts.msp" /L*vx "' + log + '"');
testRun('msiexec /quiet /a "' + swap + '\\sqlrun_ns.msi" /p "' + sp2 + '\\sqlrun_ns.msp" /L*vx "' + log + '"');
testRun('msiexec /quiet /a "' + swap + '\\sqlrun_rs.msi" /p "' + sp2 + '\\sqlrun_rs.msp" /L*vx "' + log + '"');
testRun('msiexec /quiet /a "' + swap + '\\sqlrun_sql.msi" /p "' + sp2 + '\\sqlrun_sql.msp" /L*vx "' + log + '"');
testRun("XCOPY /Y /E " + swap + " " + server);
}
function installTools() {
testRun("XCOPY /Y /H " + sp2 + "\\*.msi " + tools);
testRun('msiexec /quiet /a "' + tools + '\\sqlrun_tools.msi" TARGETDIR="' + swap + '2" /L*vx "' + log + '"');
testRun('msiexec /quiet /a "' + swap + '2\\sqlrun_tools.msi" /p "' + sp2 + '\\sqlrun_tools.msp" /L*vx "' + log + '"');
testRun("XCOPY /Y /E " + swap + "2 " + tools);
}
function testRun(runStr) {
var wsh = new ActiveXObject("Wscript.Shell");
var sys32 = wsh.ExpandEnvironmentStrings("%WINDIR%\\System32");
wsh.CurrentDirectory = sys32;
var ret = wsh.Run(runStr, 0, true);
if (ret != 0) fail();
return ret;
}
function exec(runStr) {
var wsh = new ActiveXObject("Wscript.Shell");
var shell = wsh.ExpandEnvironmentStrings("%COMSPEC%");
var ret = wsh.Run(shell + " /K " + runStr, 0, true);
if (ret != 0) fail();
wsh.Run(shell + " /K exit", 0, true);
return ret;
}
function fail() {
WScript.Echo("Process failed! Press 'Enter' to exit.");
WScript.Quit();
}
function sucess() {
WScript.Echo("Process OK! Press 'Enter' to exit.");
WScript.Quit();
}
D:\MSSQLD:\SP2cscript slipstream.js 執行腳本會依序處理 Servers 與 Tools 兩組 MSI,先複製 MSI 到暫存區,再套用 MSP 修補檔,最後複製回原安裝目錄完成整合。