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

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

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

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

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

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

针对Setup Factory 7的备份还原方法,希望对后来安装包制作有些作用。
0 \0 X) j, N/ S
( l* E% ~3 C  q* z6 m; d& B' s' V0 L以下转自http://www.localsoft.tw/forum/viewthread.php?tid=27479 D6 ?4 S+ r+ b3 l+ S! I

& R, h( |( W9 h! c: C" ~[教學] Setup Factory 7 備份還原方法3 J' V7 l. w1 o, Y
Setup Factory 7 可以設定在安裝時遇到要被覆蓋的檔案時自動將它備份成 .bak 的檔案並存放在與原始檔案相同的資料夾中。例如有下列三個檔案會被覆蓋:  `' z5 V4 P& b9 x

/ V9 q, z/ }# ]0 mabc.exe" K( A2 Q3 u. g, j" o, C% v
123.txt
- n$ a5 W% X! }1 |& f\source\xyz.dll
1 E$ g& b- ~+ |  f( I2 f5 p/ R. j' q& u3 D4 w' A
安裝後會被備份成:
  ]1 s0 \) s/ ^) F
% i, F& I. K! T, b9 I0 w" Mabc.exe.bak
$ j0 c8 `" }3 a+ G2 Z123.txt.bak0 N9 z+ j% b. E6 s6 b4 f8 e" F
\source\xyz.dll.bak
. R( T* G* p* N
: u) Q8 L* g8 H' ~之前做中文化時,使用 Setup Factory 7 製作中文安裝程式,如果在其中加入移除中文化的功能時,會遇到需要將之前備份的檔案一個一個更改回原始檔名的問題。所以每個檔案必須設定一次變更名稱的程式碼,三個就要設定三行,萬一有數十個時就頭大了。
; Y* t# B0 M5 o; p) X8 h9 D% h) n  e% R! {1 W) t
最近發現 Setup Factory 7 提供了一個很好用的處理陣列的迴圈,可以利用來一次處理所有需要改回原檔名的 .bak 備份檔案(甚至可包含子資料夾下的檔案)。這個迴圈是:
7 k' {5 Q& M( J9 N2 M" Q1 ^$ Y' C+ H

- |5 J9 p+ o/ ?2 f5 j- e3 O. L0 D+ |4 c: z) O
For index,value in _array Do
7 U, Z$ [! ]: v4 u4 t  .....
- p6 L' K% n) m2 H% [6 V( FEnd ; v6 d, |6 {7 v5 i" }

' W1 @5 M) I( Y  Q. R7 l
! c" }- l* x; D; \4 g8 M+ A( P' |- L+ ^1 D1 p; B; C
其中的 index 及 value 可以是隨便的自訂文字,如 i,v。index 是陣列中每個元素的索引;value 是陣列中每個元素的內容。_array 則要被處理的陣列 (一個用其他方法取得的變數陣列)。
* C3 K8 q% l5 g! }3 Q+ W" d, R- C
範例:
2 _3 q+ }; M6 h2 @8 A4 ^; z5 Z" B. T8 ?2 J5 r

3 {6 z4 @8 t5 O- I7 E' E, K! z
8 n: O% U: I6 jbak_result = File.Find(SessionVar.Expand("%AppFolder%"), "*.bak", true, false, nil, nil);: d2 a1 s; g. h! I
for i,v in bak_result do
' C  Z& @5 C: K7 j' ~    File.Rename(v, String.TrimRight(v, ".bak"));
% E) {0 V9 R* o7 y' B2 pend
; o4 S* F( D# U" N! A! D/ @
2 n5 q/ R' V) Z: v0 J& Y3 H: O: i  x' U, K
" y' k2 [7 S) ], W$ s6 q# S1 G
第一行,先用 File.Find 從安裝資料夾 %AppFolder% 中搜尋所有 .bak 的檔案(包含子資料夾),並將所有找到的檔案陣列存入 bak_result 這個變數。由於 %AppFolder% 是一個內建的變數,Setup Factory 7 中的所有內建變數必須使用 SessionVar.Expand() 將內建變數展開才能讀取內容。
  L" [$ D/ k) `8 }# R2 p8 N第二行,利用這次說明的陣列處理迴圈來處理,它會一個一個取出存在 bak_result 中的變數。將索引存入 i;內容存入 v。2 }* K0 H& e+ {! V# D( @
第三行,利用 String.TrimRight 將每個檔案名稱後面的 .bak 字串刪掉,並利用 File.Rename 將變數中的檔案名稱重新命名為不含 .bak 字串的檔案名稱。由於我們只是要處理每個陣列元素的內容 v,用不到索引,所以索引 i 在這行程式中並未出現。
! P. e# N/ B% f$ D# x第四行,結束迴圈。9 _* c" \! r& F; D9 c9 O& u/ C

1 h' v/ ]3 k4 ~. z由於 File.Find 找到的 .bak 檔案,會包含他的路徑及檔案名稱,因此你只要設定讓 File.Find 同時去找子資料夾下的檔案,在後續更名的過程中它也會一併將子資料夾下的 .bak 檔案也回復成原來的檔案。
1 F2 ?0 C) I; `* a; H7 j& F% K* x3 e0 H9 v( u% X5 ^
如此一來,不管你的移除對象有數十個或上百個以上的 .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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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