设为首页收藏本站官方微博

其他 [教學] Setup Factory 7 備份還原方法

[复制链接]
查看: 2869|回复: 0
打印 上一主题 下一主题

[其他] [教學] Setup Factory 7 備份還原方法

头像被屏蔽
跳转到指定楼层
楼主
发表于 2009-8-29 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

[教學] Setup Factory 7 備份還原方法

针对Setup Factory 7的备份还原方法,希望对后来安装包制作有些作用。- w3 R3 d$ _3 T2 F
; ]& d. c5 e- V  C
以下转自http://www.localsoft.tw/forum/viewthread.php?tid=27473 g, e3 C" y: x) W

7 [) t8 T! m' S# l0 R$ u2 F[教學] Setup Factory 7 備份還原方法; w) w2 e% |1 c% h9 B1 J
Setup Factory 7 可以設定在安裝時遇到要被覆蓋的檔案時自動將它備份成 .bak 的檔案並存放在與原始檔案相同的資料夾中。例如有下列三個檔案會被覆蓋:1 D- P1 l5 i. \& f( h* ]( O) O
& ?* O9 C2 S' V+ T& M6 g0 e& c
abc.exe  o/ n9 {5 j/ D1 \9 M) A9 X. d
123.txt
# x( T9 ]  h4 i6 w" E, ^4 ~\source\xyz.dll4 Z: m, K0 L& T* p, e( o

8 {  Q2 X; ^9 }& x6 U安裝後會被備份成:
) f3 z7 y% s4 p( n
& E- o) S. j2 \- @& ~abc.exe.bak9 E5 ^  H( W) v( t9 L$ g
123.txt.bak8 |, S2 e! ?2 R* M9 m; \
\source\xyz.dll.bak5 a0 U' ]7 Q  j0 L+ F

# S4 h" ]1 c" _. d之前做中文化時,使用 Setup Factory 7 製作中文安裝程式,如果在其中加入移除中文化的功能時,會遇到需要將之前備份的檔案一個一個更改回原始檔名的問題。所以每個檔案必須設定一次變更名稱的程式碼,三個就要設定三行,萬一有數十個時就頭大了。4 ^% T; c2 s  {7 J7 _7 A
. ]+ s4 G  Y! u
最近發現 Setup Factory 7 提供了一個很好用的處理陣列的迴圈,可以利用來一次處理所有需要改回原檔名的 .bak 備份檔案(甚至可包含子資料夾下的檔案)。這個迴圈是:. w( B% Y( W0 m5 A/ z7 n
3 Z5 m! R' p+ g. W

; Q4 r5 l; [+ p' z6 ~6 d& ]2 n
# c  v: a$ `" L; N5 [For index,value in _array Do
6 q" u$ R' W7 W# L# U& P8 C  .....2 ^6 E$ ^$ e/ i$ ^
End 8 W/ [( W2 d! u6 I. S
, N6 p1 ?! p6 F: T5 r6 f
) Q! o, E2 y0 m4 c6 V3 v

. i6 C0 `4 w$ M: X9 Z: w其中的 index 及 value 可以是隨便的自訂文字,如 i,v。index 是陣列中每個元素的索引;value 是陣列中每個元素的內容。_array 則要被處理的陣列 (一個用其他方法取得的變數陣列)。
7 E6 v  o: @7 c* }: ]( o* H
# s9 V" u2 W, R4 h  r$ H範例:( ]  O( Z' G1 Y' i/ ~1 V

/ S' s" P& K8 g* d' a% @ " O  f# }: V: T( o3 t( M

9 X  Q4 P7 a1 y2 w- y2 c; e) zbak_result = File.Find(SessionVar.Expand("%AppFolder%"), "*.bak", true, false, nil, nil);( I; K: O- D8 U/ O( w2 K
for i,v in bak_result do3 S3 r& z$ V% L! G; Y
    File.Rename(v, String.TrimRight(v, ".bak"));
  @4 ~: A- G8 M0 D4 K$ f6 t8 pend
" W) K  b3 Y$ a1 O  q( G6 {4 {# C' i$ n) I, Z9 W
. c$ n8 g. h. r3 I  _2 `. N1 `% r: B

' L3 {3 O. `5 H* h# j第一行,先用 File.Find 從安裝資料夾 %AppFolder% 中搜尋所有 .bak 的檔案(包含子資料夾),並將所有找到的檔案陣列存入 bak_result 這個變數。由於 %AppFolder% 是一個內建的變數,Setup Factory 7 中的所有內建變數必須使用 SessionVar.Expand() 將內建變數展開才能讀取內容。, t. h5 M( T; `# r
第二行,利用這次說明的陣列處理迴圈來處理,它會一個一個取出存在 bak_result 中的變數。將索引存入 i;內容存入 v。  G$ l* a6 c" ]* ]# y! E
第三行,利用 String.TrimRight 將每個檔案名稱後面的 .bak 字串刪掉,並利用 File.Rename 將變數中的檔案名稱重新命名為不含 .bak 字串的檔案名稱。由於我們只是要處理每個陣列元素的內容 v,用不到索引,所以索引 i 在這行程式中並未出現。2 h% a2 T9 o( |1 b4 I  N
第四行,結束迴圈。
$ w  N1 y  D" x
/ N# ?5 ~. c- A3 x, Z由於 File.Find 找到的 .bak 檔案,會包含他的路徑及檔案名稱,因此你只要設定讓 File.Find 同時去找子資料夾下的檔案,在後續更名的過程中它也會一併將子資料夾下的 .bak 檔案也回復成原來的檔案。5 M9 K5 O4 a0 r7 I! L( p

7 R- f& a0 N# @; A1 k6 F如此一來,不管你的移除對象有數十個或上百個以上的 .bak,只要上面那四行程式碼,一次全可搞定。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表