InstallShield X製作安裝程式
InstallShield X製作安裝程式雜記(前言)
公司要做一個應用軟體產品包裝,產品本身的質量,實在是不好意思說什麼,那就不說了。我的任務就是要把這個產品包裝得大氣一點。軟體的安裝程式製作,有很多工具可以使用,但頭兒指定了InstallShield X,那我們就硬著頭皮上吧!(以下簡稱X)
X的安裝,一看就與眾不同,藍色的背景,感覺很新穎。對於這個新版的安裝製作工具,對我還是有很大的吸引力的。而正因為是‘新版本’,其組織結構和以前的版本有很大不同,所以可查的資料很少,無論是英文還是中文。當時只有http://blog.joycode.com/hopeq/archive/2004/08/02/29325.aspx
上有一點比較簡單的介紹,所以主要還得靠自己了,經過大概一週的努力,遇到不少問題,總算是把一個比較常見的完整安裝過程完成了。寫下這些東西的目的,不光是給自己記錄,還可以給像我當時那樣的新手以一定的參考。文章組織也許不是很有邏輯性,所以叫‘雜記’,只要能給別人有一點用處,不至於誤導,我心足矣。如果有不正確的地方,還請大家指出。
說明:本人的安裝工程是ScriptInstallProject,所以文中的檢視、功能項均以ScriptInstallProject為準。
InstallShield X製作安裝程式雜記(1.檢視概貌)
把檢視篇寫在首位,主要是我當時在看幫助的時候,看到很多諸如installscript view,dialog view之類的字眼,可我在皮膚上不能很快的找到,好像這幫助寫的不是這個版本似的,這讓我感覺很鬱悶。而後來發現,這還是和不熟悉有很大關係。廢話少說,我們們先來看看檢視。
開啟選單View,第三個選單項為View Bar,點選之後,在視窗左邊會出現一個檢視列表條,分Installshield,View list steps和Workspace三欄,Installshield欄中主要是一些簡介、幫助資訊,不必多看。View list steps裡面即是installation Designer中的一級檢視導航。Workspace欄,這正是關鍵所在。我所疑惑的幫助中所說的view,指的就是這裡,這裡列出了常用的二級檢視。請記住:View Bar
另外一個重要的檢視是Project Assistant(工程助理檢視),在Workspace欄中有入口,但是可能出現你點選了那個按鈕,卻沒有任何反應的情況,是為什麼呢,原來問題還在View選單,看最後一個選單項Project Assistant,把它選中就可以了。
主工作區,有幾個切換頁(Start page/Project Assistant/Installation Designer)Start Page是可以不用看,其中Installation Designer是最主要的工作檢視。
本篇主要給新手剛進入系統進行環境熟悉,具體檢視的內容,將在後面的文章進行介紹。
InstallShield X製作安裝程式雜記(2.Installation Information節點)
Installation Information,即安裝資訊。
(一).General Information:
1. Project Properties,
Author Name中填寫作者姓名;Setup Languages,下面會列出一個語言列表,你可以根據需要進行勾選,InstallShield X預設的語言是English,如果你只要簡體中文的話,需要先選中Chinese(Simplified),然後把在‘String Tables’下把Chinese(Simplified)設定為預設(點選右鍵,Make Default),再把English從列表中去掉。如果選擇了多種語言,安裝時會出現語言選擇對話方塊。
PlatForms 選擇這個安裝程式可以在哪些作業系統中進行安裝。
2.Add or Remove Programs:這欄資訊與控制皮膚->新增/刪除程式相關
Display Icon:選擇在‘新增/刪除程式’列表中顯示的圖示
Disable Change Button 是否讓‘新增/刪除程式’列表中的‘更改’按鈕是否無效,預設為NO,即不Disable,有效。
Disable Remove Button 是否讓‘新增/刪除程式’列表中的‘刪除’按鈕是否無效,預設為NO,即不Disable,有效。
Publisher/Product URL 發行商/產品 網址
Read Me 可以填寫readme檔名。
。。。接下來的幾個都是類似的資訊,不再一一列出,這些資訊,將在‘新增/刪除程式’列表中點選‘支援’資訊彈出的對話方塊中出現。
3.Product Properties 產品屬性
這個很簡單,挑幾個重要的說說:
TARGETDIR 目標資料夾。比如
<FOLDER_APPLICATIONS>\<IFX_COMPANY_NAME>\<IFX_PRODUCT_NAME> 這幾個括號中的是變數。分別代表應用 程式資料夾\公司名稱\產品名稱,你也可以修改這個值,如去掉公司名稱變數。
Executable File 主程式名稱
Application Type 應用程式型別 我選的是Standard Windows Application 。這個值有對安裝有什麼影響,還沒有試驗。
4.String Tables 字串表。
點選下面的Chinese(Simplified)節點,可以看到字元定義表,這些變數,可能影響你安裝的顯示。你可以進行相應的修改、新增。
(二)Update Service更新服務 如果選了Enable Update Service為True,可以設定Host(主機)/Update Check Interval(更新檢查間隔時間)等來配置更新服務。這個功能,由於我還沒有加以試驗。先不多說,以後再補充。
InstallShield X製作安裝程式雜記(3.Orgnization節點)
(一)Setup Design 安裝設計,這個節點實際是Features和Components的一個樹結構
(二)Features 這個節點很重要。不知怎麼翻譯比較好,暫且叫‘安裝部分’比如你的軟體有幾個部分,可以由使用者選擇安裝,就需要在這裡分別設定。各個Features之間可以有依賴關係,一個Features可以包括多個Components。(通過new Component就可以建立。) 從使用者角度來看,這是產品的最小組成部分。
(三)Components 安裝零件。可以是檔案、快捷方式、登錄檔項等。多個Components組成一個Feature,從製作者角度來看,是安裝程式的最小組成部分。
(四)Setup Types 安裝型別。可以在這裡維護安裝型別,比如新增一個‘完整安裝’,‘自定義安裝’,‘最小安裝’等。這個節點很簡單,點選每個安裝型別,可以選擇相應的Feature,右邊可以設定顯示和描述的文字。
InstallShield X製作安裝程式雜記(4.Application Data節點)
1.Files and Folders(檔案與資料夾):這個一看就明白,有四個區域Source computer's folders(源機器資料夾,即製作安裝程式的機器中的資料夾),Source Computer's files(原始檔,列出原始檔夾中的檔案)
Destination computer's folders(目標機器資料夾,即要安裝的機器上的資料夾),Destination computer's files(目標檔案)。
(1) 前兩個,跟資源管理器沒多大區別,重點說說Destination computer's folder,這裡一般會列出[AppDataFolder],[Common FilesFolder],[INSTALLDIR],如果需要其他資料夾,可以通過在根節點Destination Computer上點選右鍵->Show Predifined Folder來選擇,這樣就可以把檔案安裝到相應的系統預定義資料夾中。
(2) 對於一般的安裝製作,用最後一個就可以。方法:在Source computer's folders中選定原始檔夾,按緊滑鼠,拖拽到[INSTALLDIR]節點下面,拖拽過來時,會彈出一個對話方塊,詢問你是否要使用動態檔案連結,我建議採用動態檔案連結,這樣,如果原始檔發生了變化,都可以在編譯時自動更新。接下來還會出現一個對話方塊,可以設定是否包含子目錄(Include subfolders),是否自動註冊所有的檔案(Self-Register all files)等,一般說來,按Y,然後按一個OK就可以了。
(3) 如果要指定目的資料夾的讀寫許可權,通過右鍵->Properties->Permissions來進行設定。
(4)一旦加入了資料夾,InstallshieldX就自動建立了一個Component,上一篇中已經說明了Component和Feature的關係。所以這裡,特別要注意的是,要看清楚最上面的那一行字“Add new components to the feature”後面的下拉框,(2)中的檔案,將和指定的Feature相關聯,如果這裡指定得不對,假如使用者沒有選定這個Feature,那這些檔案就不會安裝到指定的目錄。
2.Redistributables: 直譯是‘重新分配表’,我理解的就是安裝所需要的一些附帶包,可以翻譯為‘分發包’點選就可以看到一個列表,把需要的包打勾就可以。
InstallShield X製作安裝程式雜記(5.System Configuration節點)
1.Shortcuts(快捷方式):快捷方式主要是以下幾個地方:
Start Menu(開始選單)/Programs Menu(程式選單)/Startup(啟動)/Desktop(桌面)
(1)Start Menu,如果你裝了UtraEdit就知道了,點選開始選單,在上方就可以看到,這是比較cool的一種方式,堪稱最快捷。而且很多軟體都不往那裡裝,比較顯眼,好找。
(2)Programs Menu,是大多數軟體都採用的快捷方式位置,即在開始->程式中所列出。
(3)Startup,如果你的軟體希望使用者開機就執行,可以在這裡建立,位於開始->程式->啟動。
(4)Desktop,在桌面建立快捷方式。
幾種快捷方式的配置方式都一樣,在相應節點上點選右鍵,有一個New Shortcut(但我這裡不知道什麼原因該項無效),我使用的是New Advertised Shortcut,建立以後,右邊會出現一個Key-Value表項,這裡挑幾個說說。
Display Name:快捷方式的名稱。
Target:這裡寫快捷方式指向的檔名,對應快捷方式中的“目標”。比如<TARGETDIR>\bin\pmain.exe
Arguments:引數。比如主程式的執行引數是pmain -start,那這裡就填寫-start。
Working Directory:對應快捷方式中的“起始位置”,比較重要,如果不設定,而程式中使用GetCurrentPath可能獲得的是快捷方式所在的位置(如桌面,而不是目標所在目錄),從而導致程式路徑錯誤。對應上面的Target,這裡應該填寫 <TARGETDIR>\bin。
2.Registry(登錄檔):可以把一些資訊寫入登錄檔。這個節點的工作區佈局,和上篇所說的Files and Folders很相似,上面是源(Recource),下面是目的(Destination),如果要複製登錄檔項名稱,用法很簡單,在Source computer's Registery view中選定要修改的登錄檔項,按緊滑鼠,拖拽到Destination computer's Registry中的相應節點中就可以;如果要新建表項,在Destination computer's Registry節點中點選右鍵,new->Key,如果要指定key值,使用相應的選單項,跟在登錄檔中直接操作差不多,這裡就不多說了。
----以下幾個節點在MSI Project中有,InstallScript Project中卻沒有。關於××× Project,我一直很困惑,我到時專門寫一個文章,提出我的困惑。
3.ODBC Resources(ODBC 源)
4.INI File Changes(ini檔案更改)
5.Environment Variables(環境變數)
這幾個節點的配置很簡單,我就不說了。
InstallShield X製作安裝程式雜記(6.Server Configuration節點)
1.Internet Information Services(IIS配置):主要是給Web專案製作使用的。
這裡有一個根IIS Configuration,右鍵->Add web side(建立web站點),建立站點時候,可以在站點上面建立虛擬目錄(New Virtual Directory)。右邊的Key-Value表中有很多條目,只要你會設定IIS,這些都是小菜了。
2.SQL Servers(MS SQL Server配置):用於SQL Server的配置,我看了一下,好像可以通過SQL指令碼(script)在安裝時建庫,建表等。一言以蔽之,可以作為資料庫的初始化。
在根節點SQL Servers上,右鍵->new SQL Connection,填寫相應資料即可。
--這個大節點,我沒有實際測試,不過比較簡單,屬於一看就明白的,就不一一翻譯了,有問題單獨交流。
InstallShield X製作安裝程式雜記(7.Behavior and Logic節點)
1.InstallScript(安裝指令碼):安裝檔案是InstallScript Project的重頭戲,可以通過編寫安裝指令碼檔案,來對安裝程式進行深層次的處理。其中提供了一些標準函式、事件,也可以自定義函式,程式碼風格有點類似C。
如何使用指令碼來“滋潤”安裝程式,後文將用專門篇幅例項說明。
2.Support Files/Billboards(支援檔案,後面的不知道咋翻譯好):一些安裝過程中需要讀寫的檔案,可以新增到這裡。後文例項中將有說明。
InstallshieldX安裝製作雜記(例項之安裝完成)
我們可以看到,很多軟體在安裝完成之後,可以有一些選項,比如“檢視ReadMe”,“執行程式”等等,這是怎麼做到的呢?
關鍵詞:OnMoved、SdFinish
1.InstallShieldX指令碼中有一個OnMoved事件。這個事件在需要安裝的檔案拷貝完成之後觸發;
2.SdFinish是一個標準對話方塊函式,函式原型為SdFinish ( szTitle, szMsg1, szMsg2, szOpt1, szOpt2, bvOpt1, bvOpt2 );從引數中可以發現,這裡只提供最多兩個選項。
例項程式碼如下:
function OnMoved()
STRING szTitle;
STRING szMsg1, szMsg2,szOpt1,szOpt2;
BOOL bvOpt1, bvOpt2;
STRING szApplicationPath,szApplicationCmdLine,szCmdLine;
begin
if (MAINTENANCE) then return 0;endif;//如果不是安裝狀態,比如修改/解除安裝狀態的時候,則不執行。
szTitle = "安裝完成";//對話方塊的標題
szMsg1 = "%P 安裝已經完成.\n" +
"請根據需要選擇下面的選項.";//%P為軟體產品名稱
//如果要單獨在這裡設定產品名稱,在之前使用如下兩句
// szProductName = "某某軟體";
// SdProductName (szProductName);
szMsg2 = "點選‘完成’按鈕完成%P安裝.";
szOpt1 = "閱讀自述檔案";//如果這裡為空,則表示只有一個選項
szOpt2 = "執行程式";
SdFinish (szTitle, szMsg1, szMsg2, szOpt1, szOpt2, bvOpt1, bvOpt2);
if (bvOpt1) then
LaunchApp ('notepad.exe',TARGETDIR ^ "\\readme.txt");//LaunchApp 用來執行某外部程式
endif;
if (bvOpt2) then
LaunchApp (TARGETDIR ^ "\\App.exe","");
endif;
end;
InstallshieldX安裝製作雜記(經驗點滴)
1. 安裝型別:
Universal Project是為了適應不同作業系統而作。
InstallScript Project最為靈活,Windows Installer頁中的project需要 windows installer server 支援,但有速度快,檔案小的優點。
2. InstallScript MSI project 可以轉換為InstallScript Project:選單project->Convert to InstallScript Project.
3.常用函式:
NumToStr,StrToNum 整型和字串相互轉換。
InstallshieldX安裝製作雜記(例項之自定義對話方塊)
如何呼叫自定義對話方塊?Installshield幫助中有說明,但有一些環節弄不好就無法實驗成功。比如ControlID,DialogID等。
通過自己的摸索,我完成了自定義對話方塊的建立、事件編寫已經呼叫,現整理出來,希望能給大家提供幫助。
1.新建對話方塊
(1)在User Interface->dialogs中新建一個Dialog,命名為fbysssDialog;
(2)通過Control tool bar加入一個Text Area,Text屬性填入"我的自定義對話方塊";
(3)加入三個Push Button,分別設定Text屬性為Back,OK,Next,Control Identifier分別設定為14,13,15。其他控制元件可以根據需要新增;
(4)Additional Tools->Direct Editor找到Dialog,設定fbysssDialog的ISResourceID為10333(如果有重複就改變數字)。
2.編寫對話方塊事件
新建一個指令碼檔案,命名,比如叫"fbysssDialog.rul"
貼上如下程式碼:
#define RES_DIALOG_ID 10333//對話方塊的ID
#define RES_PBUT_NEXT 15 // Next 按鈕的ID
#define RES_PBUT_OK 13 // OK按鈕的ID
#define RES_PBUT_BACK 14 // BACK按鈕的ID
#include "Ifx.h"
export prototype ExFn_DefineDialog(HWND);
function ExFn_DefineDialog(hMSI)
STRING szDialogName, szDLLName, szDialog;
NUMBER nDialog, nResult, nCmdValue;
BOOL bDone;
HWND hInstance, hwndParent;
// STRING sValue;
begin
szDialogName = "fbysss的自定義對話方塊";
hInstance = 0;//預設值
szDLLName = ""; ////預設值
szDialog = "";//如果指定了對話方塊的ID,這裡就設定為空字串。
hwndParent = 0;//保留引數,必須為0
nResult = DefineDialog (szDialogName, hInstance, szDLLName,
RES_DIALOG_ID, szDialog, hwndParent,
HWND_INSTALL, DLG_MSG_STANDARD|DLG_CENTERED);
// 錯誤檢查
if (nResult < 0) then
MessageBox ("出錯了.", SEVERE);
bDone = TRUE;
abort;
endif;
bDone = FALSE;
//迴圈
repeat
//顯示對話方塊,nComValue返回在對話方塊中的事件,如果正常,返回Control ID
nCmdValue = WaitOnDialog(szDialogName);
//NumToStr(sValue,nCmdValue);
//MessageBox(sValue,INFORMATION);
switch (nCmdValue)
case DLG_CLOSE:
// 關閉視窗
Do (EXIT);
case DLG_ERR:
MessageBox ("無法顯示自定義對話方塊,安裝取消.", SEVERE);
abort;
case DLG_INIT: ;
//初始化,啥不不幹
case RES_PBUT_OK:
// OK按鈕被按下
MessageBox("OK按鈕被按下了。",INFORMATION);
case RES_PBUT_NEXT:
MessageBox("Next按鈕被按下了。",INFORMATION);
bDone = TRUE;
case RES_PBUT_BACK:
MessageBox("BACK按鈕被按下了。",INFORMATION);
bDone = TRUE;
endswitch;
until bDone;
//關閉對話方塊
EndDialog (szDialogName);
//釋放記憶體
ReleaseDialog (szDialogName);
end;
3.呼叫對話方塊
在Setup.rul頭部加入#include “fbysssDialog.rul“
ExFn_DefineDialog(0);//呼叫,這句話根據需要寫在相應的地方。比如一開始就顯示,寫在function OnFirstUIBefore() 的begin之後。
編譯執行,是不是看到效果了?cool!
相關文章
- InstallShield製作ASP安裝程式(6)
- InstallShield製作ASP安裝程式(5)
- InstallShield製作ASP安裝程式(4)
- InstallShield製作ASP安裝程式(3)
- InstallShield製作ASP安裝程式(2)
- InstallShield製作ASP安裝程式(1)
- InstallShield製作升級安裝包
- InstallShield Express for delphi製作安裝程式定製BDE引擎 (轉)Express
- Installshield製作更新安裝包
- InstallShield6.3安裝檔案製作要點 (轉)
- 教你如何製作程式安裝包
- InstallShield中如何製作靜默安裝包-IntallScript或InstallScript MSI工程型別型別
- 製作asp.net的安裝程式ASP.NET
- 自己編寫安裝製作程式 (轉)
- 製作Windows 7 X86+X64 九合一安裝光碟【Z】Windows
- java 應用程式 安裝程式製作(要帶jvm)JavaJVM
- 使用NSIS製作安裝包
- Redhat kickstart 安裝光碟製作Redhat
- RedHat DVD安裝盤製作Redhat
- 升級安裝包的製作
- win10怎麼製作安裝u盤_win10安裝U盤製作教程Win10
- U盤如何製作win10安裝盤|win10安裝U盤製作方法Win10
- DMG Canvas 4.0.7 DMG安裝包製作Canvas
- Mac OS製作Ubuntu安裝U盤MacUbuntu
- 製作iPhone PXL安裝包的方法iPhone
- Mac 製作 win10 安裝盤MacWin10
- VMWare安裝蘋果作業系統OS X蘋果作業系統
- win10系統製作mac10.11安裝u盤的方法_win10如何製作mac os x 10.11安裝u盤Win10Mac
- 隨身碟如何製作win10安裝盤|win10安裝隨身碟製作方法Win10
- 製作yum源及安裝賽門鐵克
- Debian安裝包的簡單製作
- 7z製作自解壓安裝包
- 本地yum庫製作及本地安裝DockerDocker
- Python 模組的製作,釋出,安裝Python
- Logic Pro X 10.8.0中文下載安裝(專業級音訊製作軟體)音訊
- 怎樣製作win10的iOS映象安裝U盤_製作win10 iso映象安裝U盤教程Win10iOS
- 如何製作python安裝模組(setup.py)Python
- VS2010 製作安裝包