最近又在整理Installshield 打包了,有用戶(hù)要求靜默安裝和靜默卸載。而且還是exe的,msi的好說(shuō),msi的格式都是定的,windows 固定的安裝包格式,調(diào)用相應(yīng)的參數(shù)即可進(jìn)行靜默安裝和靜默卸載,exe的一直沒(méi)接觸過(guò)。在找exe靜默安裝的這個(gè)過(guò)程還是有點(diǎn)扯淡啊。。。
最開(kāi)始參考了 kevin的博客帖子,給大家貼一下:http://www.cnblogs.com/installshield/archive/2010/11/15/1877668.html
http://www.cnblogs.com/installshield/p/3411963.html
看kevin博客里面寫(xiě)的意思是:
1. 打好 exe包之后,先進(jìn)行錄制。
如何錄制? 解答:在這里我覺(jué)得有兩種方法:a. 就是kevin的那種方法,他說(shuō)給setup.exe 傳入?yún)?shù) /r。(在這里他的意思應(yīng)該是Disk Image下面一堆文件中的setup.exe.) b.另一種方法就是 直接給 生成的package下面的單個(gè)exe 傳入 /r參數(shù),所以直接在cmd里面調(diào)用 單個(gè)exe包絕對(duì)路徑 /r.即可。
2. 完成上一步之后,會(huì)在系統(tǒng)的Windows或WINNT文件夾下產(chǎn)生一個(gè)Setup.iss文件(可以通過(guò)按照時(shí)間排序查找),將此文件復(fù)制到Setup.exe同一目錄下,改名為Setup.iss.install(靜默安裝腳本)。(說(shuō)明:這步直接copy kevin博客里面的)
3. 接下來(lái)錄制靜默卸載的腳本。 和錄制靜默安裝腳本一樣, a. 用kevin的那種方法,用setup.exe /r 接著錄制。 或者 b. 用生成的單個(gè)exe /r 就行錄制。
4. 在C:\windows\下面生成的setup.iss文件,copy出來(lái),然后修改名字為 setup.iss.uninstall.
5.至此,靜默安裝卸載腳本都已經(jīng)準(zhǔn)備ok。
6.我沒(méi)有找到單個(gè)exe包進(jìn)行靜默安裝,只是將 setup.iss.install 放到和單個(gè)exe相同目錄下,然后進(jìn)行 “****.exe” /s /f1″****setup.iss.install” /f2″****.setup.log” (注意:*** 表示文件的絕對(duì)路徑。而且這里要注意的是 /f1和后面的setup.iss.install絕對(duì)路徑之間沒(méi)有空格, /f2后面也是。如果強(qiáng)加了空格,會(huì)導(dǎo)致運(yùn)行失敗的。)
7. 接下來(lái)將靜默卸載的方法:比較扯淡的是,我看kevin的博客里面說(shuō)把 靜默安裝卸載腳本放到Disk1下面就可以直接調(diào)用/s 了,媽蛋,弄了n長(zhǎng)時(shí)間總是不對(duì)。這是原文:“如果安裝包是壓縮成一個(gè)Setup.exe,可以將Setup.iss文件插入到Support Files下的Disk1下,然后重新Build,這樣安裝包可以通過(guò)“Setup.exe /s”調(diào)用?!?后來(lái)發(fā)現(xiàn)就算我把腳本放到Disk1下也不會(huì)把靜默腳本壓縮到那個(gè) 單個(gè)exe包里面。 意思就是我直接調(diào)用單個(gè)exe包然后進(jìn)行安裝完成后,會(huì)在C:\Program Files\InstallShield Installation Information\這個(gè)路徑下把當(dāng)時(shí)Disk Image里面的文件解壓出來(lái)。但是兩個(gè)靜默腳本不在里面。怎么辦?看看這兩個(gè)地址吧:http://community.flexerasoftware.com/showthread.php?124299-Silent-Uninstall-Help!&highlight=SupportDir+path
http://flexerasoftware.force.com/articles/en_US/HOWTO/Q104403
http://flexerasoftware.force.com/articles/en_US/HOWTO/Q105066
里面說(shuō),把setup.iss 腳本放到support 下面,然后用installscript腳本將其復(fù)制到剛才那個(gè)目錄:C:\Program Files\InstallShield Installation Information\ 這個(gè)目錄在Installscript中是 DISK1TARGET 這個(gè)變量表示??竭M(jìn)去之后,就想法在卸載的前 調(diào)用 DISK1TARGET 路徑下的 setup.exe 賦予參數(shù) /s /f1″DISK1TARGET路徑下的setup.iss.uninstall”即可。 至于如何調(diào)用的 setup.exe , 我的方法是自己用C++寫(xiě)了一個(gè)程序,然后用GUID找到要卸載的這個(gè)程序的 DISKTARGET路徑,然后 setup.exe和setup.iss.uninstall就都可以獲取到了。
就這樣~
聯(lián)系客服