亚洲日韩av在线观看_日韩一级欧美一级_亚洲自偷自拍另类11p_久久午夜色播影院_中国黄色三级毛片_伊人久久一区二区三区小说_国产精品va无码二区_国产三区在线视频_69热视频_日本亚洲天堂_99精品少妇_国产区 在线观看_天堂一区二区三区_大片免费在线观看视频_免费看黄色一级片_黄色毛片特级_国产 麻豆 日韩 欧美 久久_国产一级淫片s片sss毛片s级_欧美爱爱视频_精品无码一区二区三区水蜜桃

當(dāng)前位置: 首頁(yè)IT技術(shù) → 便攜軟件制作的系列教程

便攜軟件制作的系列教程

更多

在NSIS中怎么導(dǎo)入注冊(cè)表。

這有何難,用registry插件嘛:

${registry::RestoreKey} file.reg $var

可是,如果你經(jīng)常在 RestoreKey 后面用 ${registry:write} ,就會(huì)發(fā)現(xiàn),往往導(dǎo)入注冊(cè)表會(huì)失敗,或者寫入的鍵值被reg文件中的舊鍵值覆蓋了,這是為什么呢?

原來(lái),${registry::RestoreKey} 這個(gè)命令并不會(huì)等待導(dǎo)入完成。作者在文檔中寫了:

${registry::RestoreKey} simply exec regedit: regedit /s “[file]“

執(zhí)行的是 Exec 而非 ExecWait 。那么,可能 regedit.exe 尚未啟動(dòng),就開始執(zhí)行下一行命令了。制作一般的安裝包問(wèn)題不大,但便攜軟件對(duì)執(zhí)行步驟的順序要求更加精確。所以,有些人的代碼是這樣寫的:

${registry::RestoreKey} file.reg $0

Sleep 200

睡一會(huì)。睡多久?睡一秒還是一年,這種盲人摸象的做法,我們完美主義者是不會(huì)使用的。因?yàn)檫@個(gè)命令,有些朋友凡是用到registry插件,都習(xí)慣性地加上個(gè) sleep,這是完全沒(méi)有必要的,作者說(shuō)了:

問(wèn):So my question is, what other functions in your plugin behave in the same way (ie do not wait for the registry operation to finish)?

答:registry::RestoreKey is the only one.

那么,用:

ExecWait 'regedit /s "[file]"' $var

不就行了嗎?

你又錯(cuò)了,我們制作便攜軟件的時(shí)候,要對(duì)自己嚴(yán)格要求,在Vista以上的系統(tǒng)中,不經(jīng)過(guò)UAC驗(yàn)證,是無(wú)法執(zhí)行 regedit /s 這個(gè)命令的(即使導(dǎo)入HKCU中的鍵值也不行)。難道你的每個(gè)軟件都要用戶通過(guò)UAC驗(yàn)證以管理員權(quán)限運(yùn)行嗎,完全是別有居心!

可是,在UAC環(huán)境的測(cè)試中,你會(huì)發(fā)現(xiàn),即使不通過(guò)UAC驗(yàn)證,${registry::RestoreKey} 這個(gè)命令也可以完成注冊(cè)表導(dǎo)入,難道,作者隱瞞了什么?

于是,作為代碼盲的你,充滿狐疑地打開 NSIS\Include\Registry.nsh ,找到這樣一段代碼:

!define registry::RestoreKey !insertmacro registry::RestoreKey

!macro registry::RestoreKey _FILE _ERR

registry::_RestoreKey /NOUNLOAD ${_FILE}

Pop ${_ERR}

IntCmp ${_ERR} -2 0 0 +10 ;REGEDIT4 ansi file

SetDetailsPrint none

IfFileExists "$SYSDIR\reg.exe" 0 +4 ;reg.exe used in Windows2K/XP/Vista/7

nsExec::ExecToStack "$SYSDIR\reg.exe" import "${_FILE}"

Pop ${_ERR}

StrCmp ${_ERR} 0 +5 0

IfFileExists "$WINDIR\regedit.exe" 0 +3 ;regedit.exe used in Wine

ExecWait "$WINDIR\regedit.exe" /s "${_FILE}" ${_ERR}

IfErrors 0 +2

StrCpy ${_ERR} -1

SetDetailsPrint lastused

!macroend

真是狡兔三窟!registry::RestoreKey失敗后,用reg.exe import,失敗后,又用 regedit.exe /s,我們就要有這種不屈不撓的精神,不要讓一次執(zhí)行的失敗變成Bug。

眼尖的你發(fā)現(xiàn),關(guān)鍵在于這一行:

nsExec::ExecToStack "$SYSDIR\reg.exe" import "${_FILE}"

原來(lái),雖然regedit /s需要管理員權(quán)限,但reg import命令并不需要,這就是${registry::RestoreKey}成功的秘訣。

但是,${registry::RestoreKey}首先嘗試用插件導(dǎo)入,而插件并不等待導(dǎo)入結(jié)束,所以,我們?cè)趹?yīng)用的時(shí)候,要把順序顛倒一下:

nsExec::ExecToStack "$SYSDIR\reg.exe" import "${_FILE}"

Pop $0

${IfNot} $0 == 0

${registry::RestoreKey} "${_FILE}" $0

Sleep 500

${IfNotThen} $0 == 0 ${|} StrCpy ${_OutVar} Error ${|}

${Endif}

nsExec::ExecToStack是等待運(yùn)行結(jié)束的,首先執(zhí)行,假如失敗,再用${registry::RestoreKey},并暫停0.5秒(比較安全的數(shù)值)。當(dāng)以上動(dòng)作始終返回Error的時(shí)候,我們就應(yīng)該考慮做個(gè)標(biāo)記,在便攜軟件結(jié)束的時(shí)候跳過(guò)這一次軟件運(yùn)行中的注冊(cè)表修改,不覆蓋原先的reg文件了。

不過(guò),當(dāng)你翻閱 PortableApps.com Launcher 的源代碼時(shí),卻發(fā)現(xiàn)關(guān)于注冊(cè)表導(dǎo)入,僅僅用了一行:

${registry::RestoreKey} $DataDirectory\settings\$0.reg $R9

可為什么感覺上PAL那么穩(wěn)定,極少出錯(cuò)呢?我猜是因?yàn)镻AL的代碼非常繁雜,每個(gè)實(shí)際動(dòng)作以前都有一堆工作,又是讀Launcher.ini,又是轉(zhuǎn)換變量,又是檢測(cè)PAF平臺(tái),慢悠悠的,慢工出細(xì)活吧!

例1:

設(shè)想某一天,某妞將可移動(dòng)磁盤插入電腦A,電腦A為她的U盤分配了盤符 F: 。該妞使用U盤上的便攜軟件打開了儲(chǔ)存于U盤上的幾個(gè)文檔:

F:\1.doc

F:\2.doc

……

在拔出U盤的時(shí)候,她甚至沒(méi)有為最后一個(gè)文件存檔,反正所有進(jìn)度都會(huì)自動(dòng)保存嘛!

過(guò)了幾日,該妞試圖在電腦B繼續(xù)她的工作,插入U(xiǎn)盤以后,電腦B為她的U盤分配了盤符G: 。當(dāng)她打開便攜軟件的時(shí)候,她會(huì)看到“最近文檔”列表那里顯示著什么呢?

仍然是:

F:\1.doc

F:\2.doc

……

當(dāng)她試圖恢復(fù)上一次”自動(dòng)保存“的文檔,卻提示“找不到……文件”。于是,她發(fā)怒了,發(fā)誓再也不來(lái)你的網(wǎng)站。

這正常嗎?太正常了,上次你就是在F盤打開文件的嘛。可是你還能完美地使用“最近文件”列表、繼續(xù)上一次的工作嗎?

我們干革命,就是要勇于把正常變?yōu)椴徽!S谑牵覀冃枰P符替換。

什么是盤符替換

所謂盤符替換 (Driver Letter Replacement),就是在檢測(cè)到盤符相對(duì)上一次運(yùn)行時(shí)改變的時(shí)候,將某些文件中的舊盤符替換為新盤符,以實(shí)現(xiàn)用戶數(shù)據(jù)的完美銜接。以上述例子為例,就是在盤符轉(zhuǎn)變?yōu)?G: 的時(shí)候,將最近文檔列表替換為:

G:\1.doc

G:\2.doc

……

讓用戶體會(huì)不到盤符改變帶來(lái)的變化,而順利繼續(xù)上一次的工作進(jìn)程。

什么是路徑替換

例2:

設(shè)想某一個(gè)軟件,在配置文件中保存了大量包含軟件路徑的數(shù)據(jù),這些數(shù)據(jù)在軟件首次運(yùn)行時(shí)生成,指向軟件的插件、模板等目錄,假如這些目錄設(shè)置錯(cuò)誤,該軟件便無(wú)法正常運(yùn)行。

而某一天,某妞將該便攜軟件從同盤符的一個(gè)目錄移動(dòng)到另一個(gè)目錄,例如:從 f:\XXXPortable 移動(dòng)到 f:\PortableApps\XXXPortable 。

那么,如何保證該軟件正常運(yùn)行呢?假如包含路徑的設(shè)置項(xiàng)不多,我們可以一個(gè)個(gè)地寫入,而假如類似設(shè)置很多(例如ACDSee),或者數(shù)量不定,難道也要一個(gè)個(gè)寫入嗎?所以,我們需要在檢測(cè)到路徑改變時(shí),將所有的 XXXPortable 替換為 PortableApps\XXXPortable 。

目錄格式

在 PortableApps.com Launcher 中,提供了四種類型的目錄格式,分別是:

%VARIABLE% : 正向單斜杠。例如:%PAL:AppDir% = x:\portableapps\xxxportable\app 。主要應(yīng)對(duì)ini、xml等普通配置文件。

%VARIABLE:ForwardSlash% : 反向單斜杠。例如:%PAL:AppDir:ForwardSlash% = x:/portableapps/xxxportable/app

%VARIABLE:DoubleBackslash% : 正向雙斜杠。例如:%PAL:AppDir:DoubleBackslash% = x:\\portableapps\\xxxportable\\app 。主要應(yīng)用于注冊(cè)表(.reg)文件。

%VARIABLE:java.util.prefs% : 反向多斜杠。例如: %PAL:AppDir:java.util.prefs% = /X:///Portable/Apps///App/Name/Portable///App 。主要應(yīng)用于java程序。

我們需要根據(jù)替換文件的類型選擇相應(yīng)的目錄形式。假如遇到這四種情況以外的目錄形式,則要靠 Custom Code 解決。

實(shí)現(xiàn)原理與流程

為了兼顧例1與例2的兩種情況,避免兩種情況同時(shí)發(fā)生,我們要將盤符替換與路徑替換分開,那就是:先替換盤符,再替換不帶盤符的路徑。

在引導(dǎo)過(guò)程中,讀取上一次記錄的INI文件,判斷是否盤符/路徑改變。

若改變,則讀取上一次的盤符/路徑,轉(zhuǎn)換為正確形式。

讀取當(dāng)前的盤符/路徑,轉(zhuǎn)換為正確形式。

在文件中替換舊盤符為新盤符。

在文件中替換舊路徑為新路徑。

將當(dāng)前的盤符、路徑寫入INI文件,以便下一次讀取。

在 PortableApps.com Launcher 中實(shí)現(xiàn):

以ACDSee Portable為例,我們需要在引導(dǎo)過(guò)程中替換注冊(cè)表文件 HKCU.reg 中的舊盤符\路徑為新。

[FileWrite1]

Type=Replace

File=%PAL:DataDir%\settings\HKCU.reg

Find=%PAL:LastDrive%\\

Replace=%PAL:Drive%\\

[FileWrite2]

Type=Replace

File=%PAL:DataDir%\settings\HKCU.reg

Find=%PAL:LastPackagePartialDir:DoubleBackslash%

Replace=%PAL:PackagePartialDir:DoubleBackslash%

效果如下:

x:\\

替換為:

y:\\

\\xxx\\AppNamePortable

替換為:

\\yyy\\AppNamePortable

請(qǐng)注意,在 [FileWrite1] (盤符替換)中,我在 %PAL:LastDrive% 后面加上了雙斜杠。這是因?yàn)椋?PAL:LastDrive% 是不帶斜杠的(x:)。可能出現(xiàn)這種情況:替換 D:,把 DWORD: 的最后兩個(gè)字母也替換了。難道PortableApps.com的人不擔(dān)心這種情況嗎?我認(rèn)為使用PAL替換盤符的時(shí)候都要注意這一點(diǎn),替換盤符一定要加斜杠。

在 Custom Code 中實(shí)現(xiàn):

PortableApps.com Launcher 是一個(gè)死板的網(wǎng)站的死板的程序員做出的死板的工具,在險(xiǎn)峻難料的革命事業(yè)中,我們要堅(jiān)決摒棄教條主義思想。許多時(shí)候稍有變化,我們就需要用到 Custom Code 。那么,在NSIS語(yǔ)言中怎樣實(shí)現(xiàn)呢?

例如,一個(gè)程序以這樣的形式在 Data\File.txt 記錄路徑:

F__PortableApps_App_Portable

“:”、“\”、“空格”三種符號(hào)都轉(zhuǎn)換為下劃線。讓我們來(lái)寫一段 Custom Code 來(lái)解決它。

${SegmentPrePrimary}

; 替換盤符

; 首先讀取Ini文件中的記錄

ReadINIStr $0 $DataDirectory\settings\$AppIDSettings.ini $AppIDSettings LastDrive

; 替換三種符號(hào)為下劃線

${WordReplace} "$0\" "\" "_" "+" "$R0"

${WordReplace} "$R0" ":" "_" "+" "$R0"

${WordReplace} "$R0" " " "_" "+" "$R0"

; 得到當(dāng)前盤符

StrCpy $R1 "$AppDirectory" 3

; 替換三種符號(hào)為下劃線

${WordReplace} "$R1" "\" "_" "+" "$R1"

${WordReplace} "$R1" ":" "_" "+" "$R1"

${WordReplace} "$R1" " " "_" "+" "$R1"

; 在文件中替換

${ReplaceInFileCS} "$DataDirectory\File.txt" $R0 $R1

; 替換路徑

; 首先讀取Ini文件中的記錄

ReadINIStr $0 $DataDirectory\settings\$AppIDSettings.ini $AppIDSettings LastDirectory

; 替換兩種符號(hào)為下劃線

${WordReplace} "$0" "\" "_" "+" "$R0"

${WordReplace} "$R0" " " "_" "+" "$R0"

; 得到當(dāng)前路徑(不帶盤符)

StrCpy $R1 "$AppDirectory" "" 2

; 替換兩種符號(hào)為下劃線

${WordReplace} "$R1" "\" "_" "+" "$R1"

${WordReplace} "$R1" " " "_" "+" "$R1"

; 在文件中替換

${ReplaceInFileCS} "$DataDirectory\File.txt" $R0 $R1

!macroend

請(qǐng)注意文件的編碼,如果是 UTF-16LE 編碼,用 ${ReplaceInFileUTF16LECS} 。若需要忽略大小寫,取消最后的“CS”。

在原始NSIS腳本中使用,需要另外:

!include "TextReplace.nsh"

!include "ReplaceInFileWithTextReplace.nsh"

注意事項(xiàng)

盤符與路徑替換是一種簡(jiǎn)單地銜接工作環(huán)境的方法,但我認(rèn)為,在應(yīng)用中需要注意以下幾點(diǎn):

一定要確定你替換的是盤符/路徑,而非別的東西。例如,使用PAL的時(shí)候,在盤符后加入斜杠,替換 x:\ 而不是 x: 。

自行撰寫代碼時(shí),注意所替換文件的編碼。

在替換大文件或多次替換之間,加入Sleep。否則可能遇到替換失敗。

對(duì)于重要路徑,最好在替換后手動(dòng)寫入一次,以保障無(wú)誤。盤符替換依賴INI文件中的記錄,假如一次記錄與實(shí)際銜接不上,可能從此都銜接不上了。

自從去年心血來(lái)潮開了個(gè)頭,這個(gè)教程就一直沒(méi)了下文,我要用實(shí)際行動(dòng)粉碎虎頭蛇尾的謠言,同志們,今天來(lái)談?wù)?DefaultData。

剛開始制作便攜軟件的朋友常犯的一個(gè)錯(cuò)誤是,將軟件的默認(rèn)配置保存到 Data 目錄中。何以說(shuō)是錯(cuò)誤呢:

PortableApps.com格式便攜軟件在安裝后,Data目錄必須是空的。Data目錄中的文件必須在首次運(yùn)行后生成。

合格的P.A格式便攜軟件,用戶可以隨時(shí)刪除Data目錄,將便攜軟件恢復(fù)到初始狀態(tài)。

因此,如果某些默認(rèn)配置在軟件第一次運(yùn)行時(shí)必須導(dǎo)入,我們應(yīng)該將它保存到DefaultData目錄中。

DefaultData 的誕生

在一個(gè)不可考證的從前,John T. Haller 同志(PortableApps.com 的創(chuàng)始人)開始制作他的第一個(gè)便攜軟件:Firefox Portable。在移動(dòng)介質(zhì)運(yùn)行的 Firefox 瀏覽器應(yīng)該有如下調(diào)整:關(guān)閉磁盤緩存,不檢測(cè)默認(rèn)瀏覽器,不設(shè)置默認(rèn)下載目錄,同時(shí),他希望在Firefox的默認(rèn)書簽內(nèi)加入他的網(wǎng)站地址。如何實(shí)現(xiàn)以上默認(rèn)設(shè)置的調(diào)整呢?

直接修改程序?吃力不討好。于是,他在 App 目錄下新建了 DefaultData 目錄,將一份配置好的最簡(jiǎn)化的配置保存于此。在Firefox首次運(yùn)行時(shí),DefaultData 目錄的內(nèi)容會(huì)被復(fù)制到 Data 目錄,以實(shí)現(xiàn)設(shè)置默認(rèn)配置的目的。于是,今天的 Firefox Portable(以及所有標(biāo)準(zhǔn)P.A格式便攜軟件)的結(jié)構(gòu),就成了這個(gè)樣子:

-\ <--- Directory with FirefoxPortable.exe

+\App\

+\AppInfo\

+\firefox\

+\DefaultData\

+\profile\

+\settings\

+\plugins\

+\Data\

FirefoxPortable.exe

什么是 DefaultData

通過(guò)以上敘述我們已經(jīng)知道,DefaultData 是 PortableApps.com 格式便攜軟件的標(biāo)準(zhǔn)部件之一,它位于 App\DefaultData ,是軟件的默認(rèn)配置。在首次運(yùn)行時(shí),它被復(fù)制到 Data 目錄,DefaultData 內(nèi)部的文件結(jié)構(gòu)應(yīng)該和 Data 目錄完全一致。

DefaultData 怎樣工作?

DefaultData在首次運(yùn)行時(shí)復(fù)制到 Data 目錄,作為初始的程序配置。判斷是否首次運(yùn)行有幾種不同的方式:

Firefox Portable 的方式:

Firefox Portable 通過(guò) NSIS 語(yǔ)言寫成,它通過(guò)檢查 Data\Profile\prefs.js是否存在來(lái)判斷是否首次運(yùn)行,假如 Data\Profile\prefs.js 不存在,則復(fù)制默認(rèn)配置到Data目錄。這種方式較為靈活,可根據(jù)不同軟件的具體情況選擇不同的判斷物:

ProfileWork:

;=== Check for an existing profile

IfFileExists "$PROFILEDIRECTORY\prefs.js" ProfileFound

;=== No profile was found

StrCmp $ISDEFAULTDIRECTORY "true" CopyDefaultProfile CreateProfile

CopyDefaultProfile:

CreateDirectory "$EXEDIR\Data"

CreateDirectory "$EXEDIR\Data\plugins"

CreateDirectory "$EXEDIR\Data\profile"

CreateDirectory "$EXEDIR\Data\settings"

CopyFiles /SILENT $EXEDIR\App\DefaultData\plugins\*.* $EXEDIR\Data\plugins

CopyFiles /SILENT $EXEDIR\App\DefaultData\profile\*.* $EXEDIR\Data\profile

PortableApps.com Launcher 的方式:

PortableApps.com Launcher 通過(guò)檢查 Data\settings目錄是否存在判斷首次運(yùn)行,PAL在運(yùn)行一次以后必然創(chuàng)建 Data\settings 目錄,如果此目錄不存在,則判斷為首次運(yùn)行,并復(fù)制 DefaultData:

${IfNot} ${FileExists} $EXEDIR\Data\settings

CreateDirectory $EXEDIR\Data\settings

${If} ${FileExists} $EXEDIR\App\DefaultData\*.*

CopyFiles /SILENT $EXEDIR\App\DefaultData\*.* $EXEDIR\Data

${EndIf}

${EndIf}

第三種方式:

在制作具有中國(guó)特色的便攜軟件時(shí),有時(shí)會(huì)碰到更為復(fù)雜的情況。為了保證軟件始終從默認(rèn)配置的基礎(chǔ)上啟動(dòng),我們可以分別判斷多個(gè)目錄,缺少哪一個(gè),就復(fù)制哪一個(gè):

例一,

若Data\Profile不存在則復(fù)制DefaultData\Profile,若Data\Plugins不存在則復(fù)制DefaultData\Plugins:

${IfNot} ${FileExists} $EXEDIR\Data\Profile

CreateDirectory $EXEDIR\Data\Profile

CopyFiles /Silent $EXEDIR\App\DefaultData\Profile\*.* $EXEDIR\Data\Profile

${EndIf}

${IfNot} ${FileExists} $EXEDIR\Data\Plugins

CreateDirectory $EXEDIR\Data\Plugins

CopyFiles /Silent $EXEDIR\App\DefaultData\Plugins\*.* $EXEDIR\Data\Plugins

${EndIf}

例二,

在迅雷便攜版中應(yīng)用到的,檢測(cè)任何一個(gè) DefaultData 中的目錄,如果在 Data 目錄中不存在,都復(fù)制過(guò)去:

Section Main

; ......

; CopyDefaultData:

StrLen $R0 "$EXEDIR\App\DefaultData\"

${Locate} "$EXEDIR\App\DefaultData" "/L=D" CopyDefaultData

; ......

SectionEnd

Function CopyDefaultData

StrCpy $R1 $R9 "" $R0

${IfNot} ${FileExists} "$EXEDIR\Data\$R1"

CreateDirectory "$EXEDIR\Data\$R1"

CopyFiles /Silent "$R9\*.*" "$EXEDIR\Data\$R1"

${Endif}

Push $0

FunctionEnd

DefaultData 能做什么

修改默認(rèn)配置

例如,在 Evernote Portable 中,將以下內(nèi)容保存為 App\DefaultData\settings\EvernotePortable.reg:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Evernote\Evernote]

"UpdateToPreReleaseVersion"=dword:00000000

"CheckForUpdatesAtLaunch"=dword:00000000

則會(huì)在首次運(yùn)行時(shí)復(fù)制為 Data\settings\EvernotePortable.reg ,接著導(dǎo)入注冊(cè)表,實(shí)現(xiàn)默認(rèn)關(guān)閉自動(dòng)升級(jí)的目的。

程序本身的默認(rèn)/初始配置

通過(guò) Total Uninstall 監(jiān)測(cè)軟件安裝,可發(fā)現(xiàn)某些軟件在首次安裝后會(huì)在配置目錄中寫入一些文件,這些文件必須放到 DefaultData 目錄,以保證程序的完整性,以及讓用戶隨時(shí)可以刪除 Data 目錄恢復(fù)軟件初始配置。

通過(guò) DefaultData 新建文件夾

在 PortableApps.com Launcher 中,如果你希望使用 FilesMove 來(lái)移動(dòng)文件,必須保證 Data 目錄中有這個(gè)文件的父目錄,否則移動(dòng)會(huì)失敗,例如:

[FilesMove]

config\file.txt=%PAL:AppDir%\AppName

在此例中,假如Data\config目錄不存在,那么file.txt就無(wú)法被移動(dòng)到Data目錄。

解決辦法是,創(chuàng)建 App\DefaultData\config ,那么,首次運(yùn)行時(shí),App\DefaultData\config 會(huì)被復(fù)制為 Data\config ,以實(shí)現(xiàn)新建文件夾的目的。

不過(guò),在大多數(shù)情況下,將單個(gè)文件保存到 Data\settings 中是更好的方法,PAL會(huì)自動(dòng)創(chuàng)建此文件夾,避免了通過(guò) DefaultData 來(lái)創(chuàng)建的麻煩。

其它用途

在制作具有中國(guó)特色的便攜軟件時(shí),有時(shí)我們希望一些軟件配置永遠(yuǎn)是“一次性”的(例如廣告目錄),那么,我們將一份干凈的初始配置保存到 DefaultData 中,在每次軟件啟動(dòng)時(shí)復(fù)制到配置目錄,在軟件結(jié)束時(shí)刪除掉復(fù)制的副本。以保證軟件的潔凈。

注意事項(xiàng)

DefaultData 是 Data 目錄的初始狀態(tài),其目錄、文件結(jié)構(gòu)必須和 Data 目錄完全一致。假如你在設(shè)計(jì)便攜軟件時(shí)設(shè)定將注冊(cè)表導(dǎo)出到 Data\settings\AppNamePortable.reg,那么你應(yīng)該將默認(rèn)配置保存為 App\DefaultData\settings\AppNamePortable.reg 。否則無(wú)法奏效。

DefaultData 是軟件初始配置的一份存檔,應(yīng)該盡量保持精簡(jiǎn)。僅僅保留最必要的部分。你不應(yīng)該將整個(gè)配置好的 Data 保存為 DefaultData,那樣浪費(fèi)空間,延長(zhǎng)首次啟動(dòng)的時(shí)間,而應(yīng)該找出真正有必要的、不可缺少的修改部分,保存為 DefaultData 。如果你的 DefaultData 超過(guò)1M,那么就該想想辦法了。

DefaultData 應(yīng)該保留最通用的部分,如果你的 DefaultData 中存在關(guān)于你的計(jì)算機(jī)的信息,例如:installdir=c:\Program Files\AppName ,那么是非常不專業(yè)的,我們要嚴(yán)格要求自己。

通過(guò) Total Uninstall 監(jiān)視軟件安裝,可發(fā)現(xiàn)某些軟件自身的默認(rèn)配置。有時(shí)候這些配置很重要(例如一個(gè)初始的數(shù)據(jù)庫(kù)),請(qǐng)別忘了把它們保存到 DefaultData。

 

熱門評(píng)論
最新評(píng)論
發(fā)表評(píng)論 查看所有評(píng)論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)
主站蜘蛛池模板: 深圳市美奥电子有限公司| 爱康新材料有限公司| 热力有限公司是国企| 海创自动化有限公司| 无锡工装自控工程有限公司| 淮南万泰电子有限公司| 益升华贸易 宁波 有限公司| 深圳聚宝电器有限公司| 开心人信息技术有限公司| 沈阳创奇游乐设备有限公司| 四川亚西机器有限公司| 宁波江北食品有限公司| 聚思力信息技术有限公司| 广州文搏实业有限公司| 科嘉霖电器有限公司| 明日电器设备有限公司| 坤兴海洋生物有限公司| 艾德生物医药有限公司| 成都华气厚普机电有限公司| 家居美装饰设计有限公司| 上海 镱 有限公司| 奥科电子机械有限公司| 嘉兴雅培营养品有限公司| 九源北京国际建筑顾问有限公司| 深圳先进光学有限公司| 兴灿五金制品有限公司| 哈尔滨动物药业有限公司| 梅州市客品食品有限公司| 广东珠江电器有限公司| 深圳市沃凯电子有限公司| 青岛液化空气有限公司| 江西省鑫隆建筑有限公司| 佳源建设工程有限公司| 浙江蓝天园林有限公司| 上海佩特化工有限公司| 常州特比斯国际贸易有限公司| 华新建设工程有限公司| 佐敦涂料张家港有限公司| 拓倍(深圳)有限公司| 江苏凤凰置业有限公司| 中交筑路机械有限公司| 德图仪器国际贸易上海有限公司| 曲阜铸造材料有限公司| 内蒙古君正化工有限公司| 哈尔滨钛业有限公司| 深圳市森创电子有限公司| 智慧产业有限公司招聘| 摩恩(上海)厨卫有限公司| 昆明未来城有限公司| 高明森和园食品有限公司| 中粤进出口有限公司| 江苏建江发展有限公司| 海海逸科贸有限公司| 杭州 纺织品贸易有限公司| 上海盈智电子有限公司| 柯尔柏上海有限公司| 宁波榭光电有限公司| 金圣电子东莞有限公司| 爱康健身器材有限公司| 赫比精密塑胶制品有限公司| 万旭电子元件有限公司| 上海映瑞光电有限公司| 翔天建设工程有限公司| 四川弘川置业有限公司| 井源机电设备有限公司| 显亮昆山汽车配件有限公司| 利丰贸易深圳有限公司| 拓普科电子有限公司| 江苏汽车零件有限公司| 松联通讯器材有限公司| 祥隆建设工程有限公司| 惠州志伟电子有限公司| 上海以弈信息技术有限公司| 鑫高益磁材有限公司| 株洲易力达有限公司| 螺旋桨制造有限公司| 汕头未来发展有限公司| 阜阳市 农业有限公司| 苏州泰斯奥有限公司| 上海天办公家具有限公司| 广州土工材料有限公司| 佛山德造电器有限公司| 重庆智翔铺道技术工程有限公司| 南洋家具(佛山)有限公司| 华亿妇幼用品有限公司| 嘉兴浩天实业有限公司| 深圳昶裕隆实业有限公司| 中杰建设工程有限公司| 深圳智能门窗有限公司| 平煤机械制造有限公司| 波士顿电梯有限公司| 青岛琴岛电器有限公司| 深圳市旭轩有限公司| 介休义棠煤业有限公司| 上海奥科机械有限公司| 深圳市凯鸿电子有限公司| 洛阳北方摩托车有限公司| 江苏苏天拍卖有限公司| 烟台船舶设备有限公司| 全驰通轮胎有限公司| 古裔娜服饰有限公司| 温州市瓯海眼镜有限公司| 蒙山绿色食品有限公司| 福建大发展有限公司| 深圳安科高技术有限公司| 盛隆钢结构有限公司| 常州腾龙汽车零部件有限公司| 北京博雅信息技术有限公司| 深圳众盈电子有限公司| 郑州新郑国际机场有限公司| 浙江隆翠汽车有限公司| 广泰汽车销售有限公司| 重庆庆达环保工程有限公司| 创业建筑工程有限公司| 江西博雅生物有限公司| 德华装饰材料有限公司| 安徽八一化工有限公司| 苏州超威半导体有限公司| 台州台驰贸易有限公司| 唐邦知识产权有限公司| 同创医疗器械有限公司| 广西锅炉制造有限公司| 品天信息技术有限公司| 河北添加剂有限公司| 义利面包食品有限公司| 资产有限公司靠谱吗| 欧文斯科宁建筑材料有限公司| 陕西九州医药有限公司| 双龙机械设备有限公司| 金土木工程有限公司| 招商局蛇口工业区有限公司| 山东淄博风机有限公司| 江苏常发实业有限公司| 沪工汽车电器有限公司| 连云港市建设监理有限公司| 瓦锡兰苏州有限公司| 正隆纸制品有限公司| 江门市江丰食品有限公司| 深圳美容顾问有限公司| 艾克瑞电气有限公司| 精佳精密模具有限公司| 群泰机械设备有限公司| 优胜辉煌教育有限公司| 泰玛服饰深圳有限公司| 利星行机械 昆山 有限公司| 唐山中材重型机械有限公司| 滁州钢结构有限公司| 新疆洪通燃气有限公司| 吉林市器材有限公司| 河南塑胶制品有限公司| 乐美化妆品有限公司| 深圳市旺鑫精密有限公司| 上海罗克韦尔自动化有限公司| 悦虎电路(苏州)有限公司| 贵阳新天药业有限公司| 重庆九龙电力有限公司| 动车组餐饮有限公司| 茂名石化工程有限公司| 大洋精密机械有限公司| 鲍迪克无锡技术有限公司| 佛山天朋温控器有限公司| 华城装饰工程有限公司| 徽香源食品有限公司| 上海华泛信息有限公司| 神州数码融信有限公司| 浦项芜湖汽车配件有限公司| 上海华为有限公司招聘| 富山阀门实业 苏州 有限公司| 汕头文具有限公司招聘| 民健医疗器械有限公司| 凯普生物化学有限公司| 京佳宸弘生物技术有限公司| 龙海珍味食品有限公司| 台前县食品有限公司| 东莞市利宏有限公司| 山西纺织印染有限公司| 长沙的电器有限公司怎么样| 上海华普信息技术有限公司| 安格斯机械有限公司| 烟台 苹果 有限公司| 钦州钢结构有限公司| 宁波精密机床有限公司| smc北京制造有限公司| 深圳诺众电子有限公司| 成都市燃气有限公司| 九盈机械有限公司广州| 吉林天泰药业有限公司| 青岛圣美尔有限公司| 辉煌国际贸易有限公司| 常州康尔达电子有限公司| 中青国际旅游有限公司| 圣翰医疗器械有限公司| 水泥厂安装有限公司| 江河水利工程有限公司| 奔泰电子机电设备青岛有限公司| 苏州禾盛新型材料有限公司| 平方向机械有限公司| 太极工业搪瓷有限公司| 浦项汽车板有限公司| 山东汇通金融有限公司| 青海珠峰药业有限公司| 瑞欣实业(深圳)有限公司| 博世力士乐北京有限公司| 特种玻璃纤维有限公司| 延康汽车零部件有限公司 | 深圳金达有限公司招聘| 佛山科力机械有限公司| 嘉实多(深圳)有限公司| 嘉善工程有限公司招聘| 深圳证大速贷小额贷款有限公司| 苏州光伏有限公司怎么样| 杭萧钢构有限公司招聘| 松下电气机器 北京 有限公司 | 日立机械设备有限公司| 广西慧宝源制药有限公司| 深圳五洲电子有限公司| 山东美厨厨业有限公司| 重庆永庆置业有限公司| 凯兴装饰工程有限公司| 伊诺特烟台有限公司| 昆山沪士电子有限公司| 济南环保材料有限公司| 郑州市郑丰食品有限公司| smc(广州)气动元件有限公司| 上海鞋业有限公司官网| 湖北永旺商业有限公司| 湛江 餐饮有限公司| 东莞市中缆电缆有限公司| 大连宝生物工程有限公司| 博浩国际贸易有限公司| 许昌元化生物有限公司| 北京京浩置业有限公司| 上海服饰制衣有限公司| 上海乔治费歇尔管路系统有限公司| 深圳市永力有限公司| 北京必胜客有限公司| 杭州惠远实业有限公司| 意大利皮具有限公司| 上海快钱支付清算信息有限公司| 个人工作能力有限公司| 广州一康医疗有限公司| 上海宝临电气有限公司| 昌润建设工程有限公司| 大康 化工有限公司| 宝利玛工程塑料有限公司| 山一电子(深圳)有限公司| 德科电子(苏州)有限公司| 上原汽车零部件有限公司 | 陕西食品化工有限公司| 上海赫比精密模具有限公司| 南岳电控工业技术有限公司| 亚新科南岳衡阳有限公司| 鼎豪建设工程有限公司| 许昌许继电气有限公司| 海诺生物工程有限公司| 泉州乐泉贸易有限公司| 青岛电子 汽车有限公司| 上海拜耳医药保健有限公司| 博耳 无锡 电力成套有限公司| 芯硕半导体有限公司| 山东保龄生物有限公司| 嘉信浩远信息技术有限公司| 深圳天健物业有限公司| 药业制药有限公司招聘| 爱杰姆汽车配件有限公司| 山东管业有限公司地址| 苏州晶端电子有限公司| 大连华润啤酒有限公司| 嘉兴浩天实业有限公司| 爱倍信制造有限公司| 漯河 头 有限公司| 户外运动俱乐部有限公司| 天喔(福建)食品有限公司| 上海中隈贸易有限公司| 广州市华品塑料有限公司| 深圳鑫鸿光电有限公司| 东莞市塑料包装有限公司| 珠江灯光音响实业有限公司| 虎牌机械天津有限公司| 四川 农副产品 有限公司 | 佛山市海 新材料有限公司| 华冠包装材料有限公司| 新鼎电子 深圳 有限公司| 广州当大信息技术有限公司| 江苏苏宁电器有限公司| 以赛亚自动化设备有限公司| 八方钢结构有限公司| 化妆品有限公司 oem| 友宝科斯科贸有限公司| 河南淅川铝业有限公司| 四川铭维医药有限公司| 科时电子(惠州)有限公司| 神农生物工程有限公司| 大日精化(上海)有限公司| 珠海宇光电有限公司| 思达电子工程有限公司| 深圳市创科光电有限公司| 文思海辉技术有限公司上海| 沃尔德化工有限公司| 常州制宇机械制造有限公司| 爱康新材料有限公司| 顺德震德塑料机械有限公司| 北京凯新认证有限公司| 上海自控阀门有限公司招聘| 苏州好斯特模具有限公司| 富邦航运深圳有限公司| 连云港进出口贸易有限公司 | 深圳市捷信电子有限公司| 大连友田制造有限公司| 煤气发生炉有限公司| 海正药业(杭州)有限公司| 创值高科信息技术有限公司| 东莞仙津饮料有限公司| 有限公司的注册类型| 保赫曼上海有限公司| 浪潮华光光电子有限公司| 重庆鸽牌电缆有限公司| 黑龙江葵花药业有限公司| 安捷国际货运有限公司| 苏州液压机械有限公司| 巢艺装饰工程有限公司| 杭州东芝信息机器有限公司| 北京东方影业有限公司| 恒昌照明电器有限公司| 深圳市亚新亚电子有限公司| 深圳金凯光电有限公司| 阿克苏诺贝尔涂料苏州有限公司| 福州国控医药有限公司| 上海诺金科有限公司| 冀东海德堡水泥有限公司| 奥可利电子有限公司| 滁州扬子空调有限公司| 山东天勤工程有限公司| 无锡市精密钢管有限公司| 拓普科电子有限公司| 络安信息技术有限公司| 江淮纳威司达柴油发动机有限公司| 富羽阀门制造有限公司| 银河试验仪器有限公司| 芜湖联合电子汽车有限公司| 北方工业发展有限公司| 深圳江景照明有限公司| 玛氏食品北京有限公司| 四川蓝光实业有限公司| 三鑫混凝土有限公司| 上海盈智电子有限公司| 贵州良济药 业有限公司| 信诚劳务派遣有限公司| 怡雅装饰工程有限公司| 慧融信息技术有限公司| 开封粮食机械有限公司| 辉瑞制药有限公司 北京| 永林电子(上海)有限公司| 南京科教仪器有限公司| 冷暖电器工程有限公司| 东台船用配件有限公司| 威尔森环保设备有限公司| 江淮纳威司达柴油发动机有限公司 | 大通公路工程有限公司| 山东汇通金融有限公司| 浙江三以新能源有限公司| 天佑汽车销售有限公司| 雅涵装饰工程有限公司| 上海亚华湖有限公司| 正华建筑设计有限公司| 上海宝松重型机械有限公司| 名幸电子(广州)有限公司| 合肥洁洁保洁有限公司| 安徽华铝铝业有限公司| 联想(深圳)电子有限公司| 广州泰盛贸易有限公司| 上海宝钢金属有限公司| 上海 美 有限公司 法人| 广州维他奶有限公司| 东州通信设备有限公司| 港洋机电设备有限公司| 园方装饰工程有限公司| 嘉诚厦门工业有限公司| 京能电力建设有限公司| 卓越设备制造有限公司| 深圳金叶珠宝有限公司| 名鸿车顶系统有限公司| 深圳奥思光电有限公司| 吉中汽车内饰件有限公司| 上海特力屋有限公司| 广州华冠精冲零件有限公司| 蜡笔小新(天津)有限公司| 广州旭众有限公司招聘| 中韩武汉石油化工有限公司| 江门市地尔汉宇电器有限公司 | 上海 有限公司 游览| 合肥三冠机电有限公司| 中铁隧建筑有限公司| 泰美包装材料有限公司| 石冢感应电子有限公司| 桐城市米业有限公司| 广西环保材料有限公司| 廊坊聚氨酯有限公司| 浙江众泰汽车有限公司| sew-电机(苏州)有限公司| 恒大地产郑州有限公司| 山西亚宝医药有限公司| 浙江济公缘药业有限公司| 重庆中渝物业发展有限公司| 云库信息技术有限公司| 长城国际工程有限公司| asm深圳有限公司| 威豹金融押运有限公司| 东莞德龙电器有限公司| 特不同音响有限公司| 泉州 玻璃钢 有限公司| 余姚彩印包装有限公司| 山东新北洋信息技术有限公司| 精宏仪器设备有限公司| 玉兰装饰材料有限公司| 上海久之游有限公司| 深圳海川实业有限公司| 宁波榭光电有限公司| 海产品贸易有限公司| 广通贸易有限公司深圳| 广东建工设计有限公司| 济宁电力工程有限公司| 信阳天意节能技术有限公司| 能科新能源有限公司| 渤海石油钻探工程有限公司| 雷克工程机械有限公司| 沧州中铁装备制造有限公司| 养天和大药房连锁有限公司 | 乐通新材料有限公司| 富通小额贷款有限公司| 瑞昊环境工程有限公司| 伊顿工业(无锡)有限公司| 圣锦园林工程有限公司| 安美润滑油有限公司| 深圳恒宝光电有限公司| 国储能源化工有限公司| 得理电子(上海)有限公司| 华通威国际检验有限公司| 山东出入境有限公司| 温州阳光建设有限公司| 河南志元食品有限公司| 东莞宝人电器有限公司| 江苏大明金属有限公司| 宁波婴儿用品有限公司| 武汉麦克维尔空调制冷有限公司| 广西冷冻食品有限公司| 太仓环琪塑胶工业有限公司| 佳德威油漆有限公司| 一汽变速箱有限公司| 泰星精细化工有限公司| 百色得化工有限公司| 美图有限公司怎么样啊| 湖南森康生物有限公司| 永嘉嘉信阀门有限公司| 台州园林机械有限公司| 辽宁堂医药有限公司| 佳电飞球电机有限公司| 上海克鲁勃润滑剂有限公司| 北京 星洲 有限公司| 余姚彩印包装有限公司| 建贸新科建材有限公司| 北京世纪宏源有限公司| 南京幕墙装饰工程有限公司| 深圳海川实业有限公司| 上海拓拓精密机械有限公司| 四川省郎酒厂有限公司| 鑫坤建筑工程有限公司| 鸿都汽车销售有限公司| 泉州电力工程有限公司| 聚氨脂制品有限公司| 汇美(国际)有限公司| 丰网信息技术有限公司| 广州富力置业有限公司| 长兴未来发展有限公司| 扬州机床有限公司招聘| 深圳星达电子有限公司| 河北五金制造有限公司| 北京实木家具有限公司| 大连罗姆电子有限公司| 玉环玉迪机械有限公司| 慈溪打火机有限公司| 郑州新郑国际机场有限公司| 深圳市融易投有限公司| 婕芳化妆品有限公司| 波士顿电梯有限公司| 广州丰铂餐饮有限公司| 联合赛尔生物工程有限公司| 思纳建筑设计有限公司| 深圳博纳电子有限公司| 广西设备招标有限公司| 中粤马口铁有限公司| 安士澳贸易 深圳 有限公司| 上海三井商船有限公司| 昆山岱德机械有限公司| 广州新风 有限公司| 中橡鞍山化学工业有限公司| 中兴市政工程有限公司| 宁波德利机械有限公司| 意美装饰工程有限公司| 北京赛多利斯仪器有限公司| 常州常恒电器有限公司| 蜡笔小新(天津)有限公司| 威尔宝酒店设备有限公司| 恒浩建筑工程有限公司| 云峰建设工程有限公司| 四川康贝药房连锁有限公司| 田园牧歌现代农业有限公司| 和夏化学太仓有限公司| 普氏电机常熟有限公司| 劳士领汽车配件昆山有限公司| 中冶安装工程有限公司| 哈尔滨智沃有限公司| 河北保定电气有限公司| 沃帕工业设备上海有限公司| 新家装饰工程有限公司| 东芝有限公司上海分公司| 肇庆市建设工程有限公司| 广东日用化工有限公司| 强生上海有限公司招聘| 德正艺术品有限公司| 安徽医药贸易有限公司| 武夷山市山袍茶业有限公司| 武汉新能源材料有限公司| 山东齐鲁汽车有限公司| 南通富士通微电子有限公司 | 青岛轮胎销售有限公司| 深圳市宏达实业有限公司| 乐金电子(惠州)有限公司| 无锡博世汽车有限公司| 深汕高速公路有限公司| 东海洋食品有限公司| 玛斯特系统工程有限公司| 北京硬质合金有限公司| 秦皇岛涂料有限公司| 腾威机械制造有限公司| 深圳高 卓药业有限公司| 米米服饰有限公司官网| 北京摩奇食品有限公司| 南洋家具 佛山 有限公司| 绫致时装销售 天津 有限公司| 成都合金材料有限公司| 上海兰芙化妆品有限公司| 福建樱花文具有限公司| 中山瑞德卫生纸有限公司| 振鹏达食品有限公司| 深圳中海能源有限公司| 深圳安视信息有限公司| 腾冲 食品 有限公司| 特易通电子有限公司| 冰熊专用汽车有限公司| 青岛博益生物材料有限公司| 北京卡夫食品有限公司| 长安福特汽车有限公司招聘| 哈达德服装有限公司| 东莞金盛鸿电器有限公司| 石家庄 通信有限公司招聘| 名豪办公家具有限公司| 南宁三峰能源有限公司| 深圳市申投有限公司| 新希望置业有限公司| 浙江塑井塑业有限公司| 惠州志伟电子有限公司| 恩特机械制造有限公司| 中山圣马丁有限公司| 聚丰有限公司怎么样| 河南核洁净技术有限公司| 万恒国际贸易有限公司| 上海 美 有限公司 法人| 有限公司的债务怎么办| 江西晶安高科有限公司| 深圳硕日新能源有限公司| 无锡伊格尔有限公司| 名尚装饰工程有限公司| 常州士林电机有限公司| 南京 测控设备有限公司| 青岛正华信息技术有限公司| 达州川虎食品有限公司| 金河田实业有限公司| 远东高中压阀门有限公司| 沂星电动汽车有限公司| 喜斯达电器有限公司| 山西煤机装备有限公司| 济南中辉机械有限公司| 深圳维泰克技术有限公司| 苏州茂森精艺金属有限公司| 河北添加剂有限公司| 河南百年康鑫有限公司| 莫利(嘉兴)电机有限公司| 深圳中集空港设备有限公司| 宁波浦盛机械制造有限公司 | 川亿电脑(深圳)有限公司| 奥星制药装备有限公司| 河北沧州农药有限公司| 常州厨房设备有限公司| 上海礼品贸易有限公司| 广州房屋建设有限公司| 丰城瑞林稀贵有限公司| 罗克韦尔自动化上海有限公司| 日照金禾生化有限公司| 华信汽车零部件有限公司 | 心连心食品有限公司| 深圳市威龙电子有限公司| 佛山兴发机械有限公司| 广州诺佳贸易有限公司| 深圳国通电子有限公司| 亚宝四川药业有限公司| 大连冰山制冷有限公司| 常熟大陆汽车系统有限公司| 浙江金和工贸有限公司| 上海坦达座椅有限公司| 优居碧贸易上海有限公司| 苏柯汉生物工程有限公司| 深圳和润电子有限公司| 湖南博瑞新特药有限公司| 金鑫源实业有限公司| 州宏业精机有限公司| 恒安消防设备有限公司| 搜斗士信息技术有限公司| 咸阳 塑胶有限公司| 思宏时装(中山)有限公司| 广东天然气有限公司招聘| 大自然纸业有限公司| 众和新能源有限公司| 佛山市中泰有限公司| 深圳市通顺电子有限公司| 深圳市丰晶电子有限公司| 廊坊保温工程有限公司| 达源环保工程有限公司| 威士伯涂料上海有限公司| 新科隆电器有限公司| 武汉友德电器有限公司| 华盛电路板有限公司| 宝钢美威车轮有限公司| 万国纸业太阳白卡纸有限公司| 铁岭橡胶制品有限公司| 深圳公共交通有限公司| 南昌 测绘仪器有限公司| 佳盟子机床有限公司| 山东天景工程有限公司| 上海大隆机器有限公司| 温州工程塑料有限公司| 上海精密机械配件有限公司| 泉州亚泰制药有限公司| 鸿大装饰工程有限公司| 嵊州盛泰色织有限公司| 全顺机械制造有限公司| 江苏丹顶鹤建设有限公司| 中山伦灯灯饰有限公司| 船舶工业物资华东有限公司| 深圳豆制品有限公司| 云空间设计有限公司| 纺织品有限公司英文| 超日太阳能有限公司| 石家庄食品添加剂有限公司 | 可儿婴儿用品有限公司| 三星商业设备有限公司| 郑州嘉 贸易有限公司| 云南交通设施有限公司| 昆明矿山机械有限公司| 中交港航工程有限公司| 易汇资本融资租赁有限公司| 北京比新机电设备有限公司 | 上海银泰置业有限公司| 国泰精密机件无锡有限公司| 深圳品道餐饮有限公司|