wingangal 發表於 2008-11-21 11:55:47

請教使用Setup Factory製作自動判斷為新安裝或更新安裝檔檔

<P>各位前輩好,小弟請教一個問題,</P>
<P>之前已使用SetupFactory 7.0 製作一個安裝程式,該檔為1.0版本,</P>
<P>因內部程式更新需求, 程式檔案更新為2.0版本, 現在如何使用SetupFactory製作一個2.0的安裝執行檔,</P>
<P>且這個安裝執行檔會自動判斷是否有無舊版本的程式存在, 若有舊版本則先移除原先的舊程式檔案再安裝新檔案...</P>
<P>請問該如何製作此自動判斷有無舊檔案且會自行移除舊檔安裝新檔的安裝程式?</P>

MarchFun 發表於 2008-11-21 15:18:09

<P>我的想法是:</P>
<UL>
<LI>啟動時用一段 IF 的程序讓它去檢查舊版的檔案有沒有存在,使用 File.DoesExist()
<LI>如果要更精確的話,一併檢查執行檔的版本號碼,使用 File.GetVersionInfo()
<LI>要移除舊版的程式的話,得看你當初有沒有為舊版設計 uninstall 的功能才能決定用什麼方法來移除。
<LI>如果舊版有設計 uninstall 的話,直接呼叫它的 uninstall 指令來執行。</LI></UL>

wingangal 發表於 2008-11-21 17:17:04

<P>感謝前輩指教~</P>
<P>對於此設定有些概念了...</P>
<P>之前的舊檔案有設定uninstall的設定,但...</P>
<P>使用呼叫 Uninstall的指令該如何下?</P>
<P>if (資料夾存在) then</P>
<P>result = "執行uninastall指令"(我這裡不知道該怎麼下)</P>
<P>解除安裝後, 再繼續新檔案的安裝(這裡還需要的設定煩請前輩指教)&nbsp;</P>
<P>感謝!!!</P>

MarchFun 發表於 2008-11-21 21:00:07

<P>要呼叫舊版的 uninstall&nbsp;很簡單,到你舊版的那個 uninstall 捷徑,按右鍵選擇內容,看看它怎麼用的即可。接下來設定讓新版程式等待到這個移除程序完成後再繼續接下來的步驟。</P>
<P>&nbsp;</P>
<P>如果你未來還是有更新的需求,建議你直接在 registry 中新增一個機碼然後專門登錄你自己要用到的值,例如軟體版本...等等的。以後直接讀取這個值作為更新的依據即可。</P>

wingangal 發表於 2008-11-24 13:09:33

<P>感謝前輩的指點說明~</P>
<P>但...對於細節設定仍有問題...</P>
<P>因為個人對於Setup Factory的使用仍是新手階段...</P>
<P>不知前輩是否相關此深入的教學說明(如: 動作指令語法)介紹...可供後輩學習操作...</P>
<P>因為新手常碰到的問題是...大概瞭解怎麼使用...卻不知道該下何種語法或是設定方式....</P>
<P>這是仰賴個人經驗及前輩分享教學的....感謝您~</P>

MarchFun 發表於 2008-11-24 13:54:40

<P>我並沒有相關的教學,也是一步一步慢慢試,不懂的地方直接去看它的 Help。</P>
<P>&nbsp;</P>
<P>其實你可以試著做,然後再把遇到的問題丟上來討論。</P>

wingangal 發表於 2009-2-9 18:34:30

本文章最後由 wingangal 於 2009-2-9 06:36 PM 編輯

前輩~您好~我又來請教打擾您了~
我在授權合約頁面的下一步按鈕裡置入如下的Code:
//如果資料夾已存在
if Folder.DoesExist("%AppFolder%") then

//執行uninstall.exe的程式
result = File.Run(SessionVar.Expand("%WindowsFolder%\\%ProductName%\\uninstall.exe"), "/U:C:\Program Files\測試程示\Uninstall\uninstall.xml", "", SW_SHOWNORMAL, false);

我是參照uninstall.exe執行檔的捷徑參數設定,但碰到問題如下:
1. 我執行上述Code...會產生檔案內容不符,無法執行Unstall.exe的問題,是那裡錯了?
2. 若安裝使用者改變安裝路徑,我該怎麼使用那個語法先去讀取使用者的舊檔案安裝路徑內的XML,再讓它讀取並執行uninstall.exe ?

煩請前輩指點...感謝!

MarchFun 發表於 2009-2-9 20:32:38

%AppFolder% 是內建的變數,所有內建的變數均需要使用 SessionVar.Expand()
用 %AppFolder% 來判斷舊版是否存在並不是一個好方法,最好如前面所說的,判斷某個檔案的某個版本。
頁: [1]
檢視完整版本: 請教使用Setup Factory製作自動判斷為新安裝或更新安裝檔檔