InstallshieldX安裝製作雜記

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!
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 整型和字符串相互轉換。
InstallShield X製作安裝程序雜記(7.Behavior and Logic節點)
1.InstallScript(安裝腳本):安裝文件是InstallScript Project的重頭戲,可以通過編寫安裝腳本文件,來對安裝程序進行深層次的處理。其中提供了一些標準函數、事件,也可以自定義函數,代碼風格有點類似C。
如何使用腳本來“滋潤”安裝程序,後文將用專門篇幅實例說明。
2.Support Files/Billboards(支持文件,後面的不知道咋翻譯好):一些安裝過程中需要讀寫的文件,可以添加到這裏。後文實例中將有說明。

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製作安裝程序雜記(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製作安裝程序雜記(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製作安裝程序雜記(3.Orgnization節點)
(一)Setup Design 安裝設計,這個節點實際是Features和Components的一個樹結構
(二) Features 這個節點很重要。不知怎麼翻譯比較好,暫且叫‘安裝部分’比如你的軟件有幾個部分,可以由用戶選擇安裝,就需要在這裏分別設置。各個Features之間可以有依賴關係,一個Features可以包括多個Components。(通過new Component就可以建立。)從用戶角度來看,這是產品的最小組成部分。
(三)Components 安裝零件。可以是文件、快捷方式、註冊表項等。多個Components組成一個Feature,從製作者角度來看,是安裝程序的最小組成部分。
(四)Setup Types 安裝類型。可以在這裏維護安裝類型,比如添加一個‘完整安裝’,‘自定義安裝’,‘最小安裝’等。這個節點很簡單,點擊每個安裝類型,可以選擇相應的Feature,右邊可以設置顯示和描述的文字。
uploads/200609/27_081706_image001.jpg

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製作安裝程序雜記(1.視圖概貌)
把視圖篇寫在首位,主要是我當時在看幫助的時候,看到很多諸如installscript view,dialog view之類的字眼,可我在面板上不能很快的找到,好像這幫助寫的不是這個版本似的,這讓我感覺很鬱悶。而後來發現,這還是和不熟悉有很大關係。廢話少說,咱們先來看看視圖。
打開菜單View,第三個菜單項爲View Bar,點擊之後,在窗口左邊會出現一個視圖列表條,分Installshield,View list steps和Workspace三欄,Installshield欄中主要是一些簡介、幫助信息,不必多看。View list steps裏面即是installation Designer中的一級視圖導航。Workspace欄,這正是關鍵所在。我所疑惑的幫助中所說的view,指的就是這裏,這裏列出了常用的二級視圖。請記住:View Bar
uploads/200609/27_081747_image003.jpg

另外一個重要的視圖是Project Assistant(工程助理視圖),在Workspace欄中有入口,但是可能出現你點擊了那個按鈕,卻沒有任何反應的情況,是爲什麼呢,原來問題還在 View菜單,看最後一個菜單項Project Assistant,把它選中就可以了。
主工作區,有幾個切換頁(Start page/Project Assistant/Installation Designer)Start Page是可以不用看,其中Installation Designer是最主要的工作視圖。
本篇主要給新手剛進入系統進行環境熟悉,具體視圖的內容,將在後面的文章進行介紹。

InstallShield X製作安裝程序雜記(前言)
   公司要做一個應用軟件產品包裝,產品本身的質量,實在是不好意思說什麼,那就不說了。我的任務就是要把這個產品包裝得大氣一點。軟件的安裝程序製作,有很多工具可以使用,但頭兒指定了InstallShield X,那咱就硬着頭皮上吧!(以下簡稱X)
   X的安裝,一看就與衆不同,藍色的背景,感覺很新穎。對於這個新版的安裝製作工具,對我還是有很大的吸引力的。而正因爲是‘新版本’,其組織結構和以前的版本有很大不同,所以可查的資料很少,無論是英文還是中文。當時只有http://blog.joycode.com/hopeq/archive/2004/08/02/29325.aspx
上有一點比較簡單的介紹,所以主要還得靠自己了,經過大概一週的努力,遇到不少問題,總算是把一個比較常見的完整安裝過程完成了。寫下這些東西的目的,不光是給自己記錄,還可以給像我當時那樣的新手以一定的參考。文章組織也許不是很有邏輯性,所以叫‘雜記’,只要能給別人有一點用處,不至於誤導,我心足矣。如果有不正確的地方,還請大家指出。
說明:本人的安裝工程是ScriptInstallProject,所以文中的視圖、功能項均以ScriptInstallProject爲準。  
發佈了22 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章