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

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

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

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

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

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

针对Setup Factory 7的备份还原方法,希望对后来安装包制作有些作用。$ K- @2 S; _+ t; F  s
, A) @' C# V. p' ?( J
以下转自http://www.localsoft.tw/forum/viewthread.php?tid=2747
. U) x& o# t; y% i1 \- U9 Z% N3 u0 @! k) h6 e1 ~8 h
[教學] Setup Factory 7 備份還原方法
! l5 p: P% S/ YSetup Factory 7 可以設定在安裝時遇到要被覆蓋的檔案時自動將它備份成 .bak 的檔案並存放在與原始檔案相同的資料夾中。例如有下列三個檔案會被覆蓋:
3 m8 t" ~* S+ ~, d& @( O9 S, X: g# o/ y; [- J9 J# A  B2 n. M
abc.exe
+ Q; ]: ^, M/ u123.txt5 {& V  H, j. W! `
\source\xyz.dll
3 L) ~/ i6 P1 \" E( V" w7 X& S7 t% m3 k2 W, F9 f! h, z7 ~
安裝後會被備份成:
, t6 e* ^# \/ k5 o% d
: ~! L8 u# \5 o9 ~' q: {abc.exe.bak
5 |$ G% r4 P$ _& Y( W! h8 F123.txt.bak
, J4 v# y: a. U7 |3 A\source\xyz.dll.bak
+ I' f' r% c  h. k4 y7 ~
0 h& f' ?6 j' O$ G( p% D$ @1 D之前做中文化時,使用 Setup Factory 7 製作中文安裝程式,如果在其中加入移除中文化的功能時,會遇到需要將之前備份的檔案一個一個更改回原始檔名的問題。所以每個檔案必須設定一次變更名稱的程式碼,三個就要設定三行,萬一有數十個時就頭大了。) g  o' o0 }- \- J

6 f5 H8 i& o) P1 s5 t最近發現 Setup Factory 7 提供了一個很好用的處理陣列的迴圈,可以利用來一次處理所有需要改回原檔名的 .bak 備份檔案(甚至可包含子資料夾下的檔案)。這個迴圈是:
9 L- U. O2 l$ v0 J9 ~4 {6 E9 e% m2 V, ]& d

0 Z) }) N$ s" h, j& k2 ~. o$ n- S+ I% n' h7 V3 Q
For index,value in _array Do
( n0 q' Y; F& Q" G3 b  ^+ n3 f  .....( e0 G* I& J. V: b* n2 T
End . h# y  Z* b2 m. A

+ ?, V& p. w& C/ D6 x3 j7 G$ T
9 F8 f5 U; h+ I- {0 L
  j' U( f& ?) R* A1 e% v; y5 t其中的 index 及 value 可以是隨便的自訂文字,如 i,v。index 是陣列中每個元素的索引;value 是陣列中每個元素的內容。_array 則要被處理的陣列 (一個用其他方法取得的變數陣列)。+ l+ }) J! y' G2 M. n
3 @3 k- c( t+ M
範例:( I4 p" Y1 n; G. s
; \8 h# b4 z# |

; |+ B# L! `! W) P6 f
8 Q2 K0 |+ M$ P/ c) n$ U  w. ibak_result = File.Find(SessionVar.Expand("%AppFolder%"), "*.bak", true, false, nil, nil);: d; K% |/ g9 t+ N( _
for i,v in bak_result do8 B( U% }, H; U6 x% r) q3 Y3 l
    File.Rename(v, String.TrimRight(v, ".bak"));& ^) y% O; @2 s2 S# P+ Y
end 7 i6 V4 }# _6 A

1 X' t# Z1 N; k3 Q; @& r7 b- c
) ^8 A, L5 R: S' F
' }. F* }4 c3 P1 a( `' s' ?& i第一行,先用 File.Find 從安裝資料夾 %AppFolder% 中搜尋所有 .bak 的檔案(包含子資料夾),並將所有找到的檔案陣列存入 bak_result 這個變數。由於 %AppFolder% 是一個內建的變數,Setup Factory 7 中的所有內建變數必須使用 SessionVar.Expand() 將內建變數展開才能讀取內容。% `7 b/ K- B  C( O& q+ H1 k0 I
第二行,利用這次說明的陣列處理迴圈來處理,它會一個一個取出存在 bak_result 中的變數。將索引存入 i;內容存入 v。
& [: s3 c+ J) D/ `- k- E第三行,利用 String.TrimRight 將每個檔案名稱後面的 .bak 字串刪掉,並利用 File.Rename 將變數中的檔案名稱重新命名為不含 .bak 字串的檔案名稱。由於我們只是要處理每個陣列元素的內容 v,用不到索引,所以索引 i 在這行程式中並未出現。
' P& |/ \; a. s) q/ g第四行,結束迴圈。, ?7 W0 f) o, J; ~+ m
; ?0 ~) W, w/ X9 x
由於 File.Find 找到的 .bak 檔案,會包含他的路徑及檔案名稱,因此你只要設定讓 File.Find 同時去找子資料夾下的檔案,在後續更名的過程中它也會一併將子資料夾下的 .bak 檔案也回復成原來的檔案。
) h1 `6 P- @: x/ d
1 D9 w; I4 A: y: n$ |* `7 a9 o如此一來,不管你的移除對象有數十個或上百個以上的 .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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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