天天看點

使用Setup Factory 制作安裝包的一般過程

安裝包是使用者接觸到工程的第一步,是以安裝包的制作非常重要。下面記錄一下使用Setup Factory制作安裝包的過程。

建立工程

打開setupFactory,按照提示一步步往下走即可。

使用Setup Factory 制作安裝包的一般過程
使用Setup Factory 制作安裝包的一般過程

在下圖中的位置添加需要的項目。

使用Setup Factory 制作安裝包的一般過程

在下圖中的位置可以添加安裝時的語言。

使用Setup Factory 制作安裝包的一般過程

完成後進入主界面

使用Setup Factory 制作安裝包的一般過程

下面我們需要将項目中的exe檔案在桌面建立快捷方式。右鍵exe檔案(圖中的CTest.exe),選擇檔案屬性—>快捷方式。

使用Setup Factory 制作安裝包的一般過程

主界面左側的“會話變量”可以檢視或修改安裝過程中所需要的變量;“螢幕”頁籤中可以對安裝的全過程一一修改;同理,“解除安裝”頁籤中的選項可以對解除安裝的全過程一一修改。

檢測軟體是否安裝

在安裝前,一般需要檢測使用者是否已經安裝過此軟體,并采取相對的措施。我們采用安裝完成後修改系統資料庫,啟動安裝時檢查系統資料庫的方法。

1.安裝完成後修改系統資料庫資訊。

在主界面中選擇螢幕->安裝之後,進去後點選“Finished Install”,再點選編輯,找到“操作”頁籤中的“On preload”,在這裡可以用代碼完成此項功能。

為了友善起見,在會話變量中将項目名稱盡量改為英文。代碼實作過程如下。

Tip:若不知道函數需要的參數,可以滑鼠輕按兩下函數,按提示填寫參數。

softname=SessionVar.Expand("%ProductName%");
Reg_soft="Software\\\\zhizhu\\\\"..softname;
--先在HKEY_LOCAL_MACHINE中的Software中建立一個表項“zhizhu”
result = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "Software\\zhizhu");
if (result) then
else
Registry.CreateKey(HKEY_LOCAL_MACHINE, "Software\\zhizhu");
end
--建立本程式系統資料庫項,記錄安裝路徑和解除安裝路徑
Appfile=SessionVar.Expand("%AppFolder%");
Registry.CreateKey(HKEY_LOCAL_MACHINE, Reg_soft);
Registry.SetValue(HKEY_LOCAL_MACHINE, Reg_soft, "InstallPath", Appfile,);
Uninfile=SessionVar.Expand("%AppFolder%\\Uninstall\\uninstall.exe \"/U:%AppFolder%\\Uninstall\\uninstall.xml\"");
Registry.SetValue(HKEY_LOCAL_MACHINE, Reg_soft, "Uninstaller",Uninfile, );
           

然後要做的就是在啟動安裝時檢測系統資料庫中的資訊,若發現系統資料庫中有記錄,則提示使用者是否需要删除。解除安裝軟體時先擷取系統資料庫中存的解除安裝檔案位址,然後運作它。

使用Setup Factory 制作安裝包的一般過程
softname=SessionVar.Expand("%ProductName%")
Reg_soft="Software\\\\zhizhu\\\\"..softname
result = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE,Reg_soft)
if (result) then
    msgBTN = Dialog.Message(softname,'提示:此機已安裝本軟體,是否重新安裝?\r\n\r\n ',MB_YESNO,MB_ICONINFORMATION,MB_DEFBUTTON1)
    if (msgBTN == IDYES) then
        result = Registry.GetValue(HKEY_LOCAL_MACHINE,Reg_soft,"Uninstaller",true);
        File.Run(result,"","",SW_SHOWNORMAL,true);
        result = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE,Reg_soft);
        if (result) then
        msgBTN2=Dialog.Message(softname,'解除安裝未完成!是否繼續安裝?\r\n\r\n 點選“是”繼續安裝;點選“否”,退出安裝。',MB_YESNO,MB_ICONINFORMATION,MB_DEFBUTTON1);
            if (msgBTN2==IDYES) then
            elseif (msgBTN2==IDNO) then
                Application.Exit();
            end
        end
    elseif(msgBTN==IDNO) then
        Application.Exit();
    end
else
end