返回   ShareGet 社群討論 > ≡ 電腦網路 ≡ > □ -- 軟體討論

發表新主題 回覆
 
主題工具 顯示模式
  #1  
舊 2006-07-22, 12:54 PM
bojack 的頭像
Orz
 
註冊日期: 2004-06-08
文章: 1,801
給予: 30 | 感謝 46 | 共 12 篇
積分: 9457 | 給分能力: 43
[教學] 利用 WinRAR 製作 「一鍵安裝版 Windows Live Messenger」 全記錄

[ 前言 ]
很久以前下載過一個卡巴斯基的防毒程式,它只有一個檔案,號稱是「一鍵安裝」版。當時覺得很神奇,點二下後它就自己安裝好了!看起來真的是很棒,使用者無須去做任何設定就安裝好了 ~ 今天要寫一篇文章來介紹這種程式是怎麼開發的出來的。看一下手邊可以用的軟體,就決定做一個「一鍵安裝版 Windows Live Messenger」,中間再針對 WLM 做去廣告的動作 ~ OK,開始囉

[ 所需軟體 ]

WinRAR

ResHack

Windows Live Messenger 主程式

[ 實作 ]

首先我先連上 MSN 網站去下載 Windows Live Messenger 主程式,下載回來後用 WinRAR 解開它,應該會得到四個檔案。

首先我們要了解一下 Windows Live Messenger 安裝時所使用的參數為何,解開壓縮後,假設我放在 C:\msn 目錄下,此時切換到 cmd 模式,鍵入 MsnMsgs.msi /help



此時應該就會跳出另一個視窗,裡面包含安裝所需要的參數說明文件!如下所示 ~
代碼:
Windows (R) Installer。V 3.01.4000.1823 

msiexec /Option <必要的參數> [選擇性參數]

安裝選項
	</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 - 無 UI
		b - 基本 UI
		r - 精簡 UI
		f - 完整 UI (預設值)
	/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 - 初始 UI 參數
		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 以取得其他命令列語法的文件。

版權所有 (C) Microsoft Corporation。保留一切權力。
本軟體部分內容根據 Independent JPEG Group 的部分作品。

詳細的參數說明就麻煩自己研究啦,而我使用的參數就只有 MsnMsgs.msi /passive

接下來就是重頭戲了,打開 WinRAR 準備開工了 ~

首先將四個檔案用滑鼠全選起來後,按右鍵選擇「加到壓縮檔(A)」後,會出現下列畫面
勾選「鎖定壓縮檔」的話,可以防止做出來的壓縮檔/自解檔就無法被它人更改 (感謝冰漾提醒)



接下來我們設定一下「圖示」的部份,挑一個美美的檔案吧,WinRAR內建做出來的圖蠻醜的 XD。點選「進階設定」->「自解檔選項」->「文字及圖示」->「從下列檔案載入自解檔圖示」,這裡要用 .ico 的檔喔~

接下來是製作自解檔最重要的地方,就是要下參數設定的部份,請點選上面那張圖最右邊的「註解」

「註解」裡面可以讓我們自己去編寫安裝過程中的一些選項,詳細參數用法介紹如下

代碼:
Delete 解壓縮前先刪除檔案
License 顯示程式的使用授權協定
Overwrite 選擇檔案的覆寫模式
Path 設定預設目標路徑
Presetup 指定解壓縮前執行的程式
SavePath 儲存目的地路徑(儲存路徑在 registry, 當下次再執行自解檔時會自動帶入, Path 參數存在時才有效)
Setup 指定解壓縮後執行的程式
Shortcut 建立解壓縮檔案的捷徑
Silent 跳過開始時的對話方塊
TempMode 解壓縮檔案到暫存資料夾
Text 加入純文字到自解檔對話方塊純文字視窗
Title 設定自解檔對話方塊標題
各個參數詳細說明,參考 Pank's Blog
代碼:
Delete=<檔案名稱>

在解壓縮到目標資料夾之前刪除指定的檔案,允許數個 Delete 命令。
如果在此指定的檔案被鎖定而無法刪除,自解檔模組在解壓縮前會試著將它臨時重新命名,並在 Windows 重新啟動時刪除它,這能不能成功則取決於 Windows 版本的差異。
範例:

Delete=winrar95.exe

Delete=rarlng.dll
代碼:
License=<使用授權協議對話方塊標題>

{-
使用授權協定純文字 1
使用授權協定純文字 2
…
}

當開始自解檔時,顯示軟體的使用授權協定,使用者可以接受,並繼續解壓縮,或拒絕並離開。
License 可以是 HTML 格式或純文字格式。後者自解檔模組會配合對話方塊將指定純文字字串結合和重新格式成最佳狀態,因此如果您希望開始新段落的話,您必須在之前加入一個空字串。
使用 HTML 可以控制顯示的字形、顏色及格式。關於 HTML 的語法在一般網際網路都找得到,或者您也可以用 HTML 編輯程式製作。
範例:

License=最終使用者使用授權協議書

{-
所有版權於 RAR 均屬於作者所專有。

此程式是共享軟體,任何人在測試期限內均可以使用此軟體。
在測試期限過後,您必須註冊。
}
代碼:
Overwrite=[n]

如果 [n] 為 0,在覆寫檔案之前使用者將先被詢問。這是 覆寫 命令的預設動作,可以不需要指定。如果 [n] 不存在或是等於 1,檔案將在沒有確認的狀況下全部覆寫。如果 [n] 等於 2,所有已存在的檔案將不會被覆寫。
範例:
Overwrite=1
代碼:
Path=<路徑>

設定預設的目標路徑。路徑的絕對使用起始點在預設下為 <磁碟機號>:,如果 <路徑> 只包含名稱,它將會被附加到 Program Files 資料夾下,如果您不希望這麼做,請從 '.\' 字元開始定義起始 <路徑>。
範例:
設定 [Calc 3.05 beta] 為資料夾名,位置在 [Program Files] 下,當成預設路徑:

Path=Calc 3.05 beta

設定 [C:\Calc] 當作預設路徑:

Path=C:\Calc

設定 [Calc] 在根目錄下當作預設路徑:

Path=.\Calc
代碼:
Presetup=<程式>

自解檔在解壓縮之前將試著執行 <程式>,在執行 <程式> 之前必須先指定目標資料夾。您可以使用此命令,比如說,當安裝新版本於舊版本上面時,用以移除先前的程式版本。
範例:
Presetup=uninstall.exe /clean
代碼:
Setup=<程式>

在成功解壓縮之後自解檔將會試著執行 <程式>。在執行 <程式> 之前,包含已解壓縮檔的資料夾將會設為目前資料夾
範例:
Setup=setup.exe

注意

1) 如果您在使用自解檔執行 InstallShield setup.exe 有問題的話,請試著執行 [setup.exe /SMS] 來代替簡潔的 [setup.exe]。此選項允許自解檔檢測安裝程式的離開。
2) 全部在自解檔命令列所指定的選項都會從 Setup=<程式> 命令提交給程式,自解檔它自己則只認得 -s 選項,也就是強制背景安裝模式而不顯示開始對話方塊。
3) 自解檔模組在安裝之前先設定 sfxname 環境變數。這個變數包含自解檔名稱,所以安裝程式可以預先讀取這類的資訊。
代碼:
shortcut=<目標類型>,<來源名稱>,<目標資料夾>,<敘述>,<捷徑名稱>

為解壓的檔案建立一個捷徑。

目標類型 是目標區域種類,可以有下列值:

D 在桌面建立捷徑
S 在 [開始] 功能表建立捷徑
P 在 [開始] 功能表/[程式集] 中建立捷徑
T 在 [啟動] 功能表中建立捷徑
來源名稱 是壓縮檔名稱。

目標資料夾 是建立捷徑的資料夾,如果它不存在,將被自我解壓縮檔建立。
敘述 是敘述捷徑的字串。
捷徑名稱 是由自解檔建立的 .lnk (捷徑) 檔案的檔案名稱。
所有選項用逗號分隔。如果您需要在選項內加入逗號字元,就把整個選項加上引號。如果您要顯示引號,則必須打兩次引號。只有目標類型和來源名稱是必需的,其他選項選用。
範例
在桌面建立在 WinRAR 資料夾中連接到 winrar.exe 的捷徑,帶有 [WinRAR 執行檔] 的敘述和 [WinRAR 壓縮軟體] 的名稱:

Shortcut=D, winrar.exe, WinRAR, "WinRAR 執行檔", "WinRAR 壓縮軟體"
代碼:
Silent[=選項]

開始解壓縮時不顯示開始對話方塊。
選項 可以是 1 或 2。如果 選項 是 1,開始解壓縮對話方塊會完全隱藏,包含進度顯示和檔案名稱。如果 選項 是 2,則跳過開始解壓縮的確認,但使用者仍然可以看到壓縮檔案的解壓縮進程。
範例:
Silent=2
代碼:
TempMode=[問題?述][@視窗標題純文字]

此命令強制自解檔建立一個臨時目錄,將全部檔案解壓縮至此,然後開始執行 Setup 命令所指定的程式,並在完成 Setup 程式之後將臨時目錄中的內容全部清除。當執行這些操作時,自解檔會自動設定為 安靜模式。如果 TempMode 命令存在的話,?述中將有 Setup 命令且不得使用 path 命令。
TempMode 命令可以有字串選項的選項,在解壓縮之前可用以定義問題和問題的標題。這樣的範例,僅在當使用者選擇 [是] 按鈕時才會開始解壓縮。
範例:

a) TempMode
b) TempMode=您希望繼續安裝 Calculator 3.05 嗎?@Calculator 安裝程式
代碼:
Text=<字串>

b)

Text

{-
字串 1
字串 2
…
}

加入指定純文字或 HTML 字串到自解檔模組的文字輸出視窗。當自解檔模組第一次遇到 Text 命令時,它會重置此視窗在加入 <字串> 之前的預設內容,後續命令則附加 <字串> 到已存在的純文字後。
這種命令語法可以一次加入單行字串或數行字串。
如果使用純文字語法時,自解檔模組會配合對話方塊將指定純文字字串結合和重新格式成最佳狀態,因此如果您希望開始新段落的話,您必須在之前加入一個空字串。
使用 HTML 可以控制顯示的字形、顏色及格式。關於 HTML 的語法在一般網際網路都找得到,或者您也可以用 HTML 編輯程式製作。

範例:

a) 加入單一字串到對話方塊視窗
Text=這是我的新程式

b) 加入指定純文字到對話方塊視窗 [Text

{-
此程式最有趣的特性是:
- 支援 Windows 剪貼簿;
- 每一個處理的檔案大小最大為 10KB;
}
代碼:
Title=<標題>

設定自解檔的視窗標題。
範例:
Title==Calculator,版本 3.05
下面是我所使用的各項參數
代碼:
Title=Bojack Test
TempMode=您希望繼續安裝 MSN 8嗎 ?@Bojack封裝程式
Overwrite=1
Silent=1
Setup=MsnMsgs.msi /passive
Shortcut=D, %ProgramFiles%\MSN Messenger\msnmsgr.exe, , 「WLM執行檔」, 「WLM」
Title 設定自解檔對話方塊標題
TempMode 解壓縮檔案到暫存資料夾,並顯示提示訊息
Overwrite 選擇檔案的覆寫模式,1 就是蓋過去
Silent 跳過開始時的對話方塊
Setup 指定解壓縮後執行的程式,也就是指定 MsnMsgs.msi 啦 ~ 後面記得要加參數喔
Shortcut 建立解壓縮檔案的捷徑

按下確定後,檔案就製作好了!很簡單吧 ~ 以後利用這個程式就可以「一鍵安裝 Windows Live Messenger」了

接下來說明如果要破解去廣告、去搜尋框的方法 ~ 參考並引用一下 「MSN去廣告,自己搞定」 的教學,如下說明:
我們這時要利用 ResHacker 這個程式來編輯 Windows Live Messenger 安裝目錄裡的 msgsres.dll
[quote=bojack]
1:去除界面上的廣告:
打開msgsres.dll中的4004-923,查找裡面的「ID=Atom(SSConstrainer)」,不包括兩頭雙引號,將前面的layoutpos=top改為layoutpos=none,編譯保存,OK

2:去除對話框下面的文字廣告方法:
同樣打開那個文件,找到:
改為:

3:去除界面底部搜索欄:
在上邊的文件中查找「idSearchContainer」
將上邊的資料「layoutpos=bottom」改成「layoutpos=none」

修改好之後要怎麼用呢,仔細想一下。我們只需先安裝 Windows Live Messenger 後,再把這個 msgsres.dll 蓋過去不就好了嗎!

所以我們先做 msgsres.dll 的自解檔,設定的方法如下圖,只需解壓縮到安裝好的目錄就好 …

製作好之後,應該就得到 msgsres.exe 這個自解檔,那我們再重新打包一次一開始所提到「四個檔案」+「msgsres.exe」吧

全選這五個檔案後,按下右鍵選擇「加到壓縮檔(A)」

在註解的頁面就要改成這個樣子,看出來了嗎?就是多加入一行 Setup=msgsres.exe 就好了 :D

大功告成囉,最後我們會得到一個這個檔案了 ~ 嘿嘿

特別感謝冰漾從中不厭其煩的指導 : )

若有興趣的人也可以再參考這些相關文章喔

[1] [教學] 自動安裝 簡易教學 - by 冰漾
[2] WinRAR self-extraction installation tip
[3] MSN 去廣告,自己搞定

此文章於 2007-05-28 08:13 PM 被 bojack 編輯.
回覆時引用此文章
bojack 有 10 位會員給予您感謝:
BF2142 (2007-05-28), citect (2006-07-24), corega (2007-02-06), 爵士貓 (2007-09-19), dophin (2006-07-24), Hades (2007-06-06), omniplay (2006-07-24), qadk (2007-05-25), shootingstar (2008-05-17), TJ-bbs (2008-05-28)
  #2  
舊 2006-07-22, 02:34 PM
newplay 的頭像
終極會員
 
註冊日期: 2004-10-16
文章: 609
給予: 3 | 感謝 0 | 共 0 篇
積分: 7099 | 給分能力: 33
喔喔 還蠻詳細的啊 有下過很多一鍵安裝版的軟體 原來是這樣做出來的啊 來玩玩看^^
回覆時引用此文章
  #3  
舊 2006-07-22, 02:34 PM
g0dty 的頭像
超級潛水會員
 
註冊日期: 2005-11-12
文章: 276
給予: 0 | 感謝 58 | 共 28 篇
積分: 7016 | 給分能力: 27
又學到一樣東西了

感謝
__________________
您的回文,就是我發文的動力

如果絕得還不賴的話,就順便加個分吧

回覆時引用此文章
  #4  
舊 2006-07-24, 01:35 AM
高級會員
 
註冊日期: 2004-12-31
文章: 168
給予: 0 | 感謝 0 | 共 0 篇
積分: 112 | 給分能力: 16
我也來試試看,作一個自動安裝檔,謝謝
回覆時引用此文章
  #5  
舊 2006-07-24, 01:57 AM
citect 的頭像
ShareGet Member
 
註冊日期: 2004-07-14
文章: 1,415
給予: 15 | 感謝 199 | 共 140 篇
積分: 21171 | 給分能力: 64
該怎麼說呢?
大大你真行!
謝謝分享!
__________________
回覆時引用此文章
  #6  
舊 2006-07-24, 02:06 AM
omniplay 的頭像
破天罡
 
註冊日期: 2006-03-24
來自: 須彌納芥子六合化十方
文章: 1,549
給予: 5 | 感謝 30 | 共 21 篇
積分: 6535 | 給分能力: 29
一直想找如何做一鍵安裝的方式~沒想到是用WinRAR~噗~今天可是茅塞頓開了
看起來似乎粉簡單~不過細部參數(真多)要熟練~還是得多練幾次~不熟練做起來綁手綁腳的>.<~老是撞牆

WinRAR既然能包一隻程式的包裝檔~不知道能不能包數支程式安裝檔順序執行?

哪個ResHack是用來做解ICON的嗎?看來似乎粉強呢?游標/圖示/對話方塊/字串表/GIF/AVI都可以丟進去阿?!中文化用的到嗎?
謝謝bo版大的分享哩~太營養了
__________________
午夜夢迴裡,在萬馬奔騰的夜裡,手持長長大劍拖地,劍揮~血灑,人~頭~落~地。
見僧殺僧!~見彿殺彿~勞關喝破~大地清明!
送積分只是獎勵,回帖才是肯定。
勇者看不到問題~眼裡瞄的都是解決方法!
名劍俱壞,英雄安在,繁華幾時相交代?
想興衰,苦為懷;東家方起西家敗,世態有如雲變改。
成,也是天地哀;敗,也是天地哀。
我劍何去何從,愛與恨情難獨鍾,我刀割破長空,是與非懂也不懂,我醉一片朦朧,恩和怨是幻是空,我醒一場春夢,生與死一切成空
回覆時引用此文章
  #7  
舊 2006-07-24, 06:54 AM
gy0418 的頭像
元老級
 
註冊日期: 2004-09-24
文章: 4,251
給予: 20 | 感謝 32 | 共 21 篇
積分: 14589 | 給分能力: 61
不錯的教學,
但是我很笨還是學不會,
先研究看看了~~
回覆時引用此文章
  #8  
舊 2006-07-24, 07:11 AM
冰漾 的頭像
北竿
 
註冊日期: 2004-06-14
來自: 資源回收筒
文章: 6,123
給予: 64 | 感謝 193 | 共 38 篇
積分: 35179 | 給分能力: 109
引用:
作者: omniplay
WinRAR既然能包一隻程式的包裝檔~不知道能不能包數支程式安裝檔順序執行?
可以...

引用:
作者: omniplay
哪個ResHack是用來做解ICON的嗎?看來似乎粉強呢?游標/圖示/對話方塊/字串表/GIF/AVI都可以丟進去阿?!中文化用的到嗎?
謝謝bo版大的分享哩~太營養了
ResHack甚至其他資源修改程式都有格式限制, 不是所有格式都行...
回覆時引用此文章
  #9  
舊 2006-07-24, 09:04 AM
omniplay 的頭像
破天罡
 
註冊日期: 2006-03-24
來自: 須彌納芥子六合化十方
文章: 1,549
給予: 5 | 感謝 30 | 共 21 篇
積分: 6535 | 給分能力: 29
這樣子有得玩了~正想把一堆有的沒的程式包一隻就好了~不知道太肥會不會有問題?~"~
有次包了一個好大包~30幾MB~怕執行有問題~又放棄了>.<

上次看到有人分享一隻程式選單介面~勾一勾就會自動安裝勾選的程式~不知道又是如何做的~好羨慕阿....

Setup Factory..等包裝程式還是嫌複雜~WinRAR可是好上手多了~這應該是WinRAR的附帶新功能(其實早就有了>.<)

ResHack別名叫[脫殼器]吧?(純猜測~"~)只能打開exe檔~MSI安裝檔就得比較專業的包裝程式來打開的~對吧?例如:Setup Factory/InstallShield...

ResHack跟PASSOLO 有粉相近的關係~都是中文化必備程式嗎?
可是PASSOLO功能比ResHack稍強一點
..感謝兩位版大的指導....
__________________
午夜夢迴裡,在萬馬奔騰的夜裡,手持長長大劍拖地,劍揮~血灑,人~頭~落~地。
見僧殺僧!~見彿殺彿~勞關喝破~大地清明!
送積分只是獎勵,回帖才是肯定。
勇者看不到問題~眼裡瞄的都是解決方法!
名劍俱壞,英雄安在,繁華幾時相交代?
想興衰,苦為懷;東家方起西家敗,世態有如雲變改。
成,也是天地哀;敗,也是天地哀。
我劍何去何從,愛與恨情難獨鍾,我刀割破長空,是與非懂也不懂,我醉一片朦朧,恩和怨是幻是空,我醒一場春夢,生與死一切成空
回覆時引用此文章
  #10  
舊 2006-07-24, 08:50 PM
初級會員
 
註冊日期: 2004-09-21
文章: 23
給予: 1 | 感謝 0 | 共 0 篇
積分: 10 | 給分能力: 18
真是詳細的介紹阿!!
這樣我們就可以自己透過WinRAR做...一鍵安裝版
等等來試做一下,感謝分享這麼實用的資訊
回覆時引用此文章
發表新主題 回覆

書簽

主題工具
顯示模式

發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用
論壇跳轉


所有時間均為GMT -5。現在的時間是 11:11 AM


Powered by vBulletin® Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.