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

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

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

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

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

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

针对Setup Factory 7的备份还原方法,希望对后来安装包制作有些作用。& h* Q1 }' A' Z. }1 a
8 I" W8 [+ m5 I' r
以下转自http://www.localsoft.tw/forum/viewthread.php?tid=2747
# U+ G! _3 x2 `  q$ B% ?/ _1 @2 Z0 q' h: W
[教學] Setup Factory 7 備份還原方法5 \# W8 `8 \1 y
Setup Factory 7 可以設定在安裝時遇到要被覆蓋的檔案時自動將它備份成 .bak 的檔案並存放在與原始檔案相同的資料夾中。例如有下列三個檔案會被覆蓋:
5 P3 H. Y/ q5 m& ]8 T6 S' G2 D6 _( p( M8 h
abc.exe# W$ M2 r5 r& S0 X9 T6 f- f) C
123.txt3 E& E2 J, l- j) n8 q2 Z
\source\xyz.dll
' E- O- \% ?7 K( S9 k# A5 @$ j( g  |7 h
安裝後會被備份成:
3 b) B8 a& H! Y: Z' F
4 \1 {0 a: _/ Wabc.exe.bak: v% x4 P1 n( R- f
123.txt.bak- b! J% i" s1 @, ?# m$ W
\source\xyz.dll.bak
" E4 B! o$ q% h0 g# d
: G* {& }; y/ d: g+ @4 `6 u! W之前做中文化時,使用 Setup Factory 7 製作中文安裝程式,如果在其中加入移除中文化的功能時,會遇到需要將之前備份的檔案一個一個更改回原始檔名的問題。所以每個檔案必須設定一次變更名稱的程式碼,三個就要設定三行,萬一有數十個時就頭大了。: j) z2 G! }8 F/ B8 P8 i' u% i5 k
* J* q7 y/ _0 w6 C! r7 d3 r
最近發現 Setup Factory 7 提供了一個很好用的處理陣列的迴圈,可以利用來一次處理所有需要改回原檔名的 .bak 備份檔案(甚至可包含子資料夾下的檔案)。這個迴圈是:# A: F3 u# h  @! Z6 M1 L

  V5 v6 d3 z4 M3 }, `. s9 w! t
; d+ t; E9 y; M) a- {  R0 z
  G( f4 Z/ I5 P9 XFor index,value in _array Do
$ y. t. u5 K2 A0 B  .....
) c" h, e9 E& H! Y) h% SEnd 9 h" D4 X6 R; H+ \$ n( A/ p

6 r' c; x3 m5 ]( \1 Q& c
* ~! s3 z. k$ v: f+ \. C' i
# w* J" V' {/ A# q其中的 index 及 value 可以是隨便的自訂文字,如 i,v。index 是陣列中每個元素的索引;value 是陣列中每個元素的內容。_array 則要被處理的陣列 (一個用其他方法取得的變數陣列)。
/ m0 T* z- ~) Z7 a# l( V+ z; O
( W- X% Z8 p' T. e' p. W5 D0 [* S範例:( H; m- d6 G6 E$ [
) L1 D$ K9 a- W" x0 I6 u4 r! o- G4 ~
; @$ \  {) H+ K% e

+ ?2 i% x+ Z/ Jbak_result = File.Find(SessionVar.Expand("%AppFolder%"), "*.bak", true, false, nil, nil);: q8 {# K' C0 L/ F' c
for i,v in bak_result do" U) N) }( L& g2 o% e  {: f) m, \
    File.Rename(v, String.TrimRight(v, ".bak"));1 y7 S2 \* a) |+ k4 m$ M
end 0 f- Q' A* R, J3 I
$ b7 k7 f8 G" m4 W
+ z1 i1 _- O5 g  d% l. @, A

" a( q! s2 U5 @4 b第一行,先用 File.Find 從安裝資料夾 %AppFolder% 中搜尋所有 .bak 的檔案(包含子資料夾),並將所有找到的檔案陣列存入 bak_result 這個變數。由於 %AppFolder% 是一個內建的變數,Setup Factory 7 中的所有內建變數必須使用 SessionVar.Expand() 將內建變數展開才能讀取內容。
; k; L  J  F1 b; L# C, H第二行,利用這次說明的陣列處理迴圈來處理,它會一個一個取出存在 bak_result 中的變數。將索引存入 i;內容存入 v。( q: E8 \, N/ X( w6 l
第三行,利用 String.TrimRight 將每個檔案名稱後面的 .bak 字串刪掉,並利用 File.Rename 將變數中的檔案名稱重新命名為不含 .bak 字串的檔案名稱。由於我們只是要處理每個陣列元素的內容 v,用不到索引,所以索引 i 在這行程式中並未出現。4 o8 H* Q5 P2 s. T9 L
第四行,結束迴圈。
, ]( m2 V; _8 c3 {. j
# L1 Z3 O# e% S+ i+ Z由於 File.Find 找到的 .bak 檔案,會包含他的路徑及檔案名稱,因此你只要設定讓 File.Find 同時去找子資料夾下的檔案,在後續更名的過程中它也會一併將子資料夾下的 .bak 檔案也回復成原來的檔案。
7 \& A. E1 @1 A, h6 _9 v" n3 P$ v. ?1 N8 k. U9 r. j$ \
如此一來,不管你的移除對象有數十個或上百個以上的 .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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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