[C#] setup factory 教程

 

基礎篇

我們在用VB等語言編寫並編譯成程序後,往往會希望製作一個精美的安裝程序來發布自己的軟件。在這裏推薦使用Setup Factory 7.0,這是一款強大的安裝程序製作工具。該軟件提供了安裝製作嚮導界面,即使你對安裝製作不瞭解,也可以生成專業性質的安裝程序。可建立快捷方式,也可直接在 Windows 系統的註冊表加入內容,還能在 Win.ini System.ini 內加入設定值,更可以建立反安裝選項等等。它內附的嚮導可以一步步的帶領您做出漂亮又專業的安裝程序。目前該軟件的最新版本爲7.0.1,可在網上下載到,或訪問該軟件的漢化網站http://www.hanzify.org進行下載。

我在這裏簡單介紹一下如何使用Setup Factory 7.0來製作一個安裝程序。

打開軟件後,默認會跳出一個工程嚮導的界面,如下圖。

此時可點創建來新建一個工程,或是按Esc鍵退出工程嚮導。由於在首次安裝完Setup Factory 7.0後,默認語言爲英文(可能會根據軟件版本而不同),這樣在製作安裝程序時很不方便,因此需要先將默認語言改爲中文簡體。所以在這裏我們先按Esc鍵退出工程嚮導,直接進入軟件主界面。如下圖。

在主界面菜單的編輯中選擇“參數選擇”,在出現的窗口中打開Document並點擊Languages,然後在窗口右側選中Chinese (Simplified),再點擊下方的“設爲默認”,最後確定即可。如下圖。

    現 在我們可以開始製作安裝程序了。先要添加安裝文件。在菜單的工程中選擇“添加文件”,或在主界面左側的文件中選擇“添加文件”。如下圖所示,如果添加多個 文件,則可選擇“此文件夾中的所有文件”,如果有子文件夾,則選第三項“此文件夾及其子文件夾中的所有文件”。然後點擊添加按鈕。

文件加入後,即如下圖所示。

用鼠標右鍵單擊某一文件(也可選中多個文件對其編輯),選擇“文件屬性”,可修改相應設置。如下圖所示,目標中默認爲%AppFolder%,該變量表示安裝路徑,可以修改成其他自帶變量或自定義變量。

如果該文件爲可執行文件(如EXE文件等),那麼默認會在開始菜單建立相應的快捷方式。點擊上圖中的快捷方式,即可出現相關設置。如果不需要快捷方式,可取消相關項目的選擇。如下圖。

文件加入後,我們需要設置安裝程序的相關信息,如變量定義、軟件卸載等。

在左側設置中點擊“會話變量”,如下圖所示,這些變量是Setup Factory 7.0自帶的變量,在此處定義或在代碼中定義後,即可在安裝過程中使用。

新建安裝程序默認會創建卸載,如果你的軟件不需要卸載,那麼點擊主界面左側卸載中的“設置”,可關閉“創建卸載”。如下圖。

    下面我們就要開始製作安裝過程中的屏幕了。屏幕分三部分,安裝前、安裝中、安裝後。點擊主界面左側屏幕中的工程主題,在跳出的窗口下方選擇工程主題可改變安裝屏幕的樣式。

點擊上圖的“安裝之前”,可在窗口左側添加或刪除相應的屏幕。如下圖。

選中某一屏幕後,點窗口下方的編輯按鈕,即可對該屏幕進行編輯。如下圖。

在“屬性”中則可修改屏幕標題和按鈕等。如下圖。

    在“操作”中則可對該屏幕事件進行編程。如下圖。通過窗口底部的“添加操作”和“添加代碼”,可加入相應的代碼來實現所需功能。

    在“安裝之時”屏幕中,取消“安裝期間顯示進程屏幕”的選擇,該屏幕在安裝時將不再出現。如下圖。

    如果只是想在安裝過程中不顯示覆制的文件名稱及其路徑,那麼點擊“編輯”按鈕,並取消“顯示狀態文本一”的選擇。如下圖。

在“安裝之後”中可編輯安裝完畢後的屏幕界面。如下圖。

上述過程完成後,一個簡單的安裝程序就可以發佈了。點擊菜單發佈中的構建,如下圖所示,默認選擇“Web(單個文件)”即可,再點擊下一步。

確定輸出安裝程序的文件夾及安裝程序文件名稱,如下圖。然後點擊“構建”按鈕。

現在我們就可以測試做好的安裝程序了。別忘了將剛剛的Setup Factory 7.0工程保存到電腦上。


進階篇


在基礎篇裏面,我們簡單地講了一下安裝程序的製作過程,但是如果碰到一個稍微複雜點的安裝程序,比如需要對註冊表進行編輯,或是安裝過程中需要執行外部文件等,那麼又該如何處理呢?大家不要着急,看完進階篇後你就知道怎麼辦了。

既然要處理各種複雜的事件,那當然是離不開編程。Setup Factory 7.0也提供了自己的語言來編寫代碼,主要是在“屏幕”和“操作”中。我們先來看一下主界面左側的“操作”,共有4項:啓動時、預安裝時、進行安裝時、關機時。如下圖。

點擊“啓動時”,即可編寫安裝程序啓動時需要處理的事件代碼。如下圖。

點擊窗口下方的“添加操作”,可以加入Setup Factory 7.0所提供的事件代碼。如下圖。

比如想添加一個要求輸入密碼的對話框,則可選擇Dialog類別中的Input操作,如下圖。

點擊下一步後,在該操作的各項目中輸入相應數據,如下圖。

點擊完成後,該操作就以代碼的形式出現在窗口中了,如下圖。

接着可以添加條件語句來判斷密碼是否有效。點擊窗口下方的“添加代碼”,並選擇“if語句(不相等)”。如下圖。

添加後,在窗口中多了幾段代碼,如下圖。

這時,需要按它提供的格式進行修改這些代碼。如下圖。

我們需要在if語句內加入密碼無效後的操作,即提示密碼出錯和退出安裝程序。點擊“添加操作”後,選擇Dialog類別中的Message操作以及Application類別中的Exit操作,完成後代碼如下圖所示。

這樣就實現了一個簡單的密碼登錄功能,稍微有些缺陷的是密碼輸入時是以明文顯示。不過我們這裏講述的是如何通過添加操作和代碼來實現相應功能,否則我們完全可以在安裝之前的屏幕中通過添加驗證序列號來實現此功能。

那麼如何實現驗證序列號的功能呢?首先我們要生成屬於安裝程序的序列號。在菜單工程中點擊序列號,出現如下圖所示窗口。

選中列表List 1,點擊編輯,並選擇命令中的生成。如下圖。

然後輸入需要的序列號數量以及格式,如下圖。

確定後,即可生成所需的序列號,如下圖。可將這些序列號全選後導出到一個文本文件中。

確定後,再到安裝之前的屏幕中添加驗證序列號屏幕。如下圖。這樣,安裝過程中驗證序列號的功能就實現了。

在菜單的工程中點擊到期,並啓用相關設置後,安裝程序還能具備使用到期功能。如下圖。

按上圖中的設置製作的安裝程序,如果執行安裝程序的電腦上日期不在此範圍之內,那麼就會提示如下畫面。不過,到期功能並不太實用,因爲只要將電腦上的日期改成安裝程序製作日期就能繼續使用了。

有時候在安裝過程中或安裝後需要執行其中一個程序,比如破解程序、漢化程序,或是一個驅動什麼的東東,而這個程序可能不需要安裝到電腦中,只需要在安裝中被執行一次就OK了。那麼我們就可以這麼做。

由於該程序不需要隨着其他文件一起安裝到電腦中,所以不能通過添加文件來加入到安裝包中,而是點擊主界面左側“資源”中的“原始文件”來添加,如下圖。這樣在安裝程序執行時,該文件就被解壓縮到臨時目錄下,並在安裝程序正常關閉後自動刪除。

然後,我們就可以在某個屏幕中去添加相應代碼。比如需要在安裝之後但結束屏幕還未顯示之前執行該程序,那麼就可以在該屏幕的“On Preload”操作中加入Shell.Execute。注意臨時目錄的變量爲%TempLaunchFolder%,假設該程序文件名爲“Setup.exe”,那麼可以寫成“_TempLaunchFolder.."//Setup.exe"”。即某個字符型變量與字符串組合可以用“_變量名..字符串”的格式來書寫。僅僅添加這一條代碼還不夠,我們還要判斷該程序是否執行完畢,才能繼續下一步,比如再執行下一個外部程序什麼的。這樣就得用到循環語句,通過添加代碼中的“repeat …until循環”來得到一個循環語句,再在循環內加入操作File.IsInUse,並將值賦給一個自定義變量,最後修改循環條件。如下圖。

還有一種情況需要重點講述一下,就是安裝程序不需要手動選擇安裝目錄,而是固定安裝在電腦中的某個目錄下,比如插件、漢化、破解等。那麼這個目錄的取得可能就是要讀取註冊表內某個軟件的安裝路徑來重新定義了。下面就講一下如何製作。

首先我們要從註冊表內取得安裝路徑,這個取得過程應該是安裝程序啓動時就需要執行了。點擊主界面左側“操作”中的“啓動時”,添加操作Registry.GetValue,並將值賦給一個自定義變量,Registry.GetValue的寫法中,注意SubKey子鍵名稱中子鍵連接符是“//”,如下圖。

此時,上圖中的變量ProductPath就得到了一個安裝路徑,稍做處理後就可以作爲本安裝程序的安裝路徑。但是由於該變量是在代碼中定義的,不能用在安裝包內文件屬性中的“目標”中。“目標”中的變量必須是會話變量,因此我們可將變量ProductPath再賦給某個會話變量。會話變量可以是Setup Factory 7.0自帶的,也可以自定義。點擊主界面左側“設置”中的“會話變量”,再點擊窗口下方的“添加”可添加自定義會話變量。如下圖。

然後再到代碼中將剛剛的變量ProductPath賦給會話變量,注意必須使用操作SessionVar.Set來給會話變量賦值,例如SessionVar.Set("%AppFolder%", ProductPath)。如下圖。

如果安裝程序需要將安裝包內的文件分別安裝到不同目錄下,那麼就必須將這些文件屬性中的“目標”修改成不同的會話變量纔可實現。

Setup Factory 7.0的常用功能差不多就這些,主要是看你怎麼合理利用它自帶的操作,再結合控制代碼,就能編寫出功能強大的安裝程序了。

問答篇

1.    問:如何讓所安裝的軟件在開機進入系統後自行啓動?

答:在安裝程序中將軟件添加到註冊表的啓動項目中,或者添加到開始菜單的啓動項目中,還有一種方法是作爲系統的服務來啓動。在這裏介紹的是第一種方法,即在註冊表的啓動項目中加入軟件。

  我們可在Setup Factory 7.0製作安裝程序過程中,在“安裝之後”屏幕的On Preload操作中,加入Registry.SetValue操作代碼,寫法參照下圖,注意Data中爲啓動軟件的絕對路徑,可用“_會話變量名..字符串”的格式來書寫,也可用String.Concat操作將會話變量與字符串相加並賦值給一字符串變量,然後再將該變量寫入此處。

2.    問:如何讀寫INI文件?

答:可在Setup Factory 7.0中的原始文件中添加INI文件,這樣在安裝程序執行時,INI文件就被解壓縮到臨時文件夾中了。然後在Setup Factory 7.0的某個階段加入操作代碼INIFile.GetValue,就可取得INI文件中某區段內的某個值了。如下圖。

3.    問:如何在安裝程序中實現典型、最小或自定義安裝功能?

答:在很多論壇上都看到有人說Setup Factory 7.0做不了典型、最小和自定義安裝的功能,我的意見是隻有想不到、沒有做不到。實際上通過Setup Factory 7.0的程序包功能,很容易就能實現。大家可以參照下面的範例來製作自己的安裝程序。

  首先,我們要在菜單上工程中的程序包中添加設置。在跳出的窗口中點擊添加,並輸入相關信息,如下圖。

  添加完各項安裝方式的程序包後,清單如下圖。

  然後再到每個安裝文件屬性的程序包選項卡中,選擇所屬的程序包。注意,軟件必要文件必須全選,而各安裝方式所需要的文件則選擇相應的程序包即可。如下圖。

  接下來,我們就要開始做屏幕了。在“安裝之前”中添加一個單選按鈕的屏幕,並將屏幕上的單選按鈕進行設置,如下圖。

  這樣設置後,在安裝時就可以進行安裝方式的選擇了。但是我們如果選擇了自定義安裝,則還需要一個自定義安裝的選擇項,這個選擇項應是可多選的,因此可再添加一個檢查框屏幕,並做如下圖所示的設置。

  這兩個屏幕添加完成後,修改其屏幕ID,如下圖。

  現在我們要開始在這兩個屏幕中加入相應的代碼來實現不同的安裝了。

  打開“安裝方式選擇”屏幕,先記下三個單選按鈕的ID爲:CTRL_RADIO_BUTTON_01CTRL_RADIO_BUTTON_02CTRL_RADIO_BUTTON_03。這個選擇的結果會存儲在會話變量%RadioSelection%中。然後我們在操作的On Next中 開始加入代碼。首先是需要將每個程序包設置爲不安裝,因爲假如在安裝中選擇某項安裝方式後點了下一步,但是想修改安裝方式又返回到這個屏幕,這樣在重新選 擇了另外一個安裝方式後,如果沒有將原來選擇的安裝方式設置爲不安裝的話,將導致對應的兩個程序包都被執行了設置安裝的代碼。因此必須在點了下一步的代碼 中先做程序包的初始化。設置一個程序包不安裝的寫法是:SetupData.SetPackageProperties(程序包ID”{Install=false})

  然後我們就可以寫條件判斷語句了,不過先得將存有單選按鈕結果的會 話變量處理後賦給另一個新變量,因爲會話變量不能直接被使用在條件等式中。另外,如果選擇“典型安裝”或“最小安裝”,應該要跳過“自定義安裝選擇”屏 幕,而直接轉到“準備安裝”屏幕纔對,所以我們需要用到Screen.Jump(“屏幕ID”)這個操作。

  該屏幕On Next操作的所有代碼如下圖。

  我們再打開“自定義安裝選擇”屏幕來加入代碼。在On Next操作中加入條件判斷語句,根據三個複選框的選擇結果來分別對各自的程序包設置安裝狀態。另外,如果三個自定義安裝都不選,就應判定操作錯誤,因此還需添加相應的代碼。如下圖。

  以上步驟完成後,就可以構建一個具有典型、最小和自定義安裝功能的安裝程序了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章