[SMCC] Tong hop ve Portable

Nguồn: http://www.vn-zoom.com/f229/lam-portable-voi-nsis-1391382.html

================================================== ======
Chào các bạn, để các bạn có cái nhìn tổng quan về Portable, hôm nay mình xin 
trình bày một số thông tin sau

A. Những điều cần biết về Portable
1. Khái niệm Portable

Một Portable sẽ có khái niệm (không có định nghĩa) được phản ánh qua những đặc 
điểm cơ bản sau:

1.1. Đã được đóng gói sẵn vào một thư mục hoặc một file thực thi .exe duy nhất.

1.2. Tự chạy khi kích hoạt file thực thi .exe mà không cần phải cài đặt và đăng 
ký.

1.3. Có thể chạy tốt với đầy đủ chức năng trên ổ cứng, USB, mọi hệ điều hành, 
mọi tài khoản người dùng máy tính.

Với Portable dạng nâng cao sẽ có thêm những chức năng

1.4. Lưu lại những thiết lập ở lần sử dụng trước để sử dụng tiếp vào lần sau. 

1.5. Không để lại dấu vết (xóa sạch file "rác" trong phân vùng cài Win, key 
"rác" trong Registry) sau khi exit Portable nên không gây nặng máy.

1.6. Có thể update cho Portable.

Vì vậy, để hiểu rõ hơn về Portable dạng nâng cao các bạn hãy thử và cho ý kiến 
về những Portable của trang Portableapps.com (những Portable 

này được tạo

bởi phần mềm NSIS Portable hoặc Portableapps.com Launcher). Các bạn có thể tham 
khảo chi tiết cách sử dụng ở trang 

http://portableapps.com/support/portable_app.

Bên cạnh, mình cũng xin trích nhận xét của ChinhKhoi

#8

Trích ChinhKhoi View Post

1 phần mềm làm ra thấy chạy đc chưa hẳn đã đc gọi là Portable. Portable đúng 
nghĩa như cái tên của nó thì phải mang đi đc cả những settings mà 

ta đã thiết

lập cho p.mềm ngoài ra không để lại File rác trong máy sau khi chạy và nhiều 
cái khác nữa...v.v

2. Ưu thế của Portable so với phần mềm cài đặt là

2.1. Giúp bạn tiết kiệm được rất nhiều thời gian: Khi bạn có 1 công việc cần 
giải quyết gấp liên quan đến phần mềm ít khi được sử dụng (tức là 

chưa được

cài đặt) thì Portable là 1 sự lựa chọn đáng giá vì bạn sẽ không phải trải qua 
các thao tác thiết lập khi cài đặt hay chờ đợi quá trình cài đặt (nếu 

phần

mềm có dung lượng lớn). Hoặc giả sử bạn là chuyên gia quậy phá máy tính, máy 
tính của bạn đã nhiều lần “khôi phục cài đặt gốc”. Mỗi lần như 

thế, bạn phải

mắc công cài lại Windows và cài nhiều phần mềm cần thiết khác. Quá trình như 
vậy thường mất khoảng 2 tiếng. Nhưng nếu bạn đã có sẵn một 

“bộ sưu tập” phần

mềm Portable trên CD hay trên một phân vùng ổ cứng khác, quá trình cài đặt sẽ 
được rút gọn. 

2.2. Giúp bạn tiết kiệm dung lượng ổ cứng: trong trường hợp bạn đang sử dụng 
phần mềm cài đặt. Khi máy tính hay phần mềm đó gặp trục trặc, 

lỗi (hoặc phần

mềm bị khóa do liên quan đến bản quyền) thì bạn sẽ cài lại phần mềm đó với file 
cài đặt. Như vậy trong máy tính của bạn sẽ có 2 bản của 1 phần 

mềm (bản

đang chạy trên máy và file cài đặt) tức là trên máy tốn 2 lần dung lượng của 1 
phần mềm còn khi sử dụng Portable thì chỉ tốn dung lượng của 

chính bản Portable

đó mà thôi.

3. Tình hình phổ biến Portable

Hiện tại, chỉ có một số ít phần mềm Portable được các hãng phần mềm làm ra theo 
nhu cầu của người sử dụng. Những phần mềm Portable còn lại 

thì do người

tiêu dùng tự làm hoặc dựa trên một số phần mềm khác để làm ra. Còn các hãng 
phần mềm lớn không chủ trương biến sản phẩm đang có của họ 

thành Portable vì

chỉ cần sao chép ra nhiều bản khác nhau là có thể sử dụng cho rất nhiều PC mà 
không cần phải trả phí bản quyền, người tiêu dùng sẽ chuyển 

qua sử dụng dạng

Portable và họ sẽ tất thu lớn. Do không liên quan đến bản quyền nên rất nhiều 
phần mềm Portable là phần mềm mã nguồn mở.

4. Các loại PortableĐể các bạn dễ hình dung, theo ý kiến chủ quan, mình chia 
portable làm 2 loại

dựa trên tác động vào Registry của Windows

4.1. Portable "ảo" làphần mềm được đóng gói chạy trong môi trường ảo (môi 
trường này có registry của riêng nó để key của phần mềm add vào) 

tạo bởi VMwareThinapp, 

Xenocode Virtual Appliance Studio, Evalaze,...

4.2. Portable "thật" là phần mềm tuy được đóng gói nhưng lại tác động thật lên 
Registry của Windows như phần mềm cài đặt tạo bởi Multi 

Packer, Winrar,Universal Extractor, NSIS-Total Uninstall, PortableApps.com 
Launcher, Portable App Creator, Apps Creation Master, các soft 

theo dõi (monitor) thay đổi

registry khi cài đặt phần mềm (Total Uninstall (TU), FindChangeTool, 
WhatChanged, RegFromApp, 

RegShot, Disk and Registry Alert, MJ Registry Watcher,..), các soft chuyển phần 
mềm cài đặt từ chỗ này sang chỗ khác cũng "có thể" tạo được 

Portable (Ez File Transplanter, Steam Mover, Application Mover,...). Kể ra cũng 
hơi nhiều.

5. Đặc điểm phần mềm tạo Portable

Để các bạn dễ lựa chọn phần mềm tạo Portable phù hợp với bản thân, mình đã sử 
dụng, tham khảo, so sánh và nhận thấy

5.1. Ưu thế của Portable "thật" so với Portable "ảo" là có thể dùng 

5.1.1. Kết hợp các phần mềm lại với nhau như Firefox với IDM,...

5.1.2. Kết hợp phần mềm với hệ thống như OfficeTab với Word...

5.2. Nếu muốn tạo Portable không cần kết hợp với phần mềm hay với hệ thống tức 
là Portable "ảo", các bạn nên sử dụng VMware Thinapp để tạo 

vì quá trình

tạo Portable sẽ đơn giản và quá trình sử dụng Portable sẽ không tạo ra file, 
key rác "lộn xộn" trong máy.

5.3. Trong các phần mềm tạo Portable "thật", mình đã tìm hiểu và thấy những 
nhận xét sau:

5.3.1. Multi Packer

#2

Trích ChinhKhoi View Post

thật sự thì nó chỉ đơn thuần là một Trình đóng gói File (như đúng cái tên của 
nó Multi Packer) và chức năng còn kém xa WinRar nhưng lại đc các 

bác brồ IT

thổi phồng lên là nó làm đc Portable

Nhưng cũng phải nói là nó cũng làm đc Portable đối với 1 vài soft đơn giản chỉ 
cần thư mục trong ProgramFiles (vd như CCleaner), còn đối với 

những softmà cần những File trong system32, đăng kí Registry hoặc những cái 
khác nữa .v.v. thì cái này có mà khóc thét !hi hi

#14

Trích Tùng - Hacker View Post

Đây chỉ là phần mềm để đóng gói file lại (Giống winrar) để chạy, làm các 
portable đơn giản thì được chứ lớn và phức tạp, cần file hệ thống thì 

chịu.

5.3.2. Winrar

#13

Trích ChinhKhoi View Post

Nếu máy dùng các Portable đc làm bằng cách này thì chẳng mấy chốc sẽ thành bãi 
rác!

cười nhăn răng

Như bạn biết đấy, 1 phần mềm khi cài vào máy và chạy sẽ sinh ra một số File 
dùng để lưu các thiết lập của nó.Các thiết lập này thường là các key 

đc lưu

trong registry hoặc các File trong Application Data..v.v.

Nhưng các bộ cài thì còn có các trình Uninstall đi kèm để khi ko dùng nữa thì 
sẽ gỡ sạch các File và các key đó ra khỏi máy tính

Còn Portable làm bằng Winrar theo như bác chủ thớt hướng dẫn thì ko hề có chức 
năng xóa các File này sau khi chạy, mà chỉ đơn giản là dùng 

Winrar nén cái

thư mục của chương trình trong Program Files lại mà thôi, hệ quả là sau khi 
Portable chạy xong thì các thiết lập của chương trình trong registry 

hay trong

thư mục Application Data vẫn còn ngay cả khi bạn xóa cái Portable ấy đi chăng 
nữa. 

Như vậy mỗi Portable(làm theo kiểu này) của 1 chương trình sau khi chạy lại để 
lại 1đống các File và các key trog Registry thì lâu dần máy tính 

của bạn

sẽ thành cái gì thì ko nói cũng biết.

5.3.3. Universal Extractor

#36

Trích hiepcun View Post

_Phần mềm này cũng tương tự Winrar thôi,nhưng khác ở chỗ là nó extract các file 
có đuôi là .exe,.msi..và một số đuôi khác nữa!nhưng cái này có 

rất nhiều

hạn chế như ko phải file exe nào cũng extract được,hay những file khi extract 
ra ko hề giống những file trong thư mục C:\Program Files ->ko thể 

chạy được!

_cái Universal extractor này chỉ giúp các bác ko phải cài ứng dụng vào máy mà 
vẫn lấy được thư mục của ứng dụng trong C:\Program Files và vài 

thư mục khác

mà thôi

_còn chuyện cái này làm được Portable vì 1 lí do rất đơn giản là bản thân những 
ứng dụng mà nó extract đã có thể tự chạy đc rồi,tức là những 

ứngdụng đó

có thể chạy mà ko cần đến các file ở các thư mục khác(ngoài Program Files),các 
khóa trong Registry hay các Service..có thể kể ra 1 vài VD đơn 

giảnnhư:

Unikey,IDM,CCleaner..vv.Với những ứng dụng đơn giản như vậy thì các bác chỉ 
việc copy cái thư mục của ứng dụng đó trong C:\Program Files 

là chạy được rồi!

6. Khái niệm về các thành phần khác liên quan đến Portable

Thamkhảo

1. Hỏivề compiler và interpreter?

2. khác biệt giữa trình biên dịch (compiler) và trình thông dịch (interpreter)

6.1. Code - Mã nguồn: khi ta ra lệnh hay nhờ một người A làm việc gì đó, ta sẽ 
truyền đạt thông tin bằng ngôn ngữ để A có thể hiểu được. Tương 

tự như vậy,

khi tara lệnh cho máy tính thực hiện công việc gì, ta cũng phải dùng ngôn ngữ 
để máy có thể hiểu. Tuy nhiên ngôn ngữ thông thường mà con 

người dùng trong

cuộc sống khác xa ngôn ngữ mà máy hiểu. Ngược lại, việc dùng trực tiếp ngôn ngữ 
của máy để viết một loạt lệnh cho máy thực hiện thì lại vô 

cùng vất vả.

Vì vậy người ta đã tạo ra những ngôn ngữ lập trình cao có cú pháp và thành phần 
gần như ngôn ngữ thông thường nên dễ hiểu, dễ viết rất nhiều 

(đối với người

đã học về lập trình). Từ đó ta cần một chương trình để dịch một đoạn mã (mà ta 
gọi là Code) từ ngôn ngữ lập trình cao (ngôn ngữ nguồn) sang 

ngôn ngữ mà

máyhiểu và file chứa Code được gọi là file nguồn (ở đây Code được viết trong 
file nguồn là Template.nsi). Việc dịch này có thể làm theo chủ yếu 

bằng hai

cách:6.2. Compiler - Trình biên dịch: là chương trình dịch toàn bộ Code trong 
file nguồn để tạo thành file thực thi .exe có thể được đem đi sử dụng 

độc lập

và không còn phụ thuộc vào Compiler nữa (ở đây Compiler là NSIS Portable).

6.3. Interpreter - Trình thông dịch: là chương trình vừa dịch từng Code trong 
file nguồn vừa chạy/thực thi từng lệnh nên mỗi lần cần chạy lại lệnh 

thì

phải dùng lại 

Interpreter. Ví dụ, mỗi lần thực thi lệnh trong file .bat thì phải dùng lại DOS 
tích hợp trong Windows.

6.4. Launcher (tạm gọi là trình phóng): đây là thành phần đặc trưng của 
Portable theo PortableApps.com Format™ 3.0 (2012-04-18) được gọi là file 

quản lý

${PNAME}.exe có chức năng điều khiển toàn bộ hoạt động của Portable. Ví dụ như 

TreeSize Free Portable.exe

7. Các bạn có thể tham khảo thêm trong Google hoặc muốn đơn giản, trực quan 
sinh động hơn nữa là trong Youtube với các từ khóa tiếng Việt 

lẫn tiếng Anh:

tạo portable (creat portable), làm portable (make portable), portable hóa 
(portabilize). Gợi ý: để tăng kết quả khi tìm trong Google thì có thể thay 

thế

những từ khóa đồng nghĩa với nhau như: 

Application (ứng dụng) có thể viêt là App, Program (chương trình), Software 
(phần mềm). Make (làm) có thể là Create (tạo), Portabilize (di động 

hóa) nênMaker viết thành Creator, Portabilizer. Portable có thể là Pocket 
(túi), Standalone (độc lập)...Mình tìm được một số link tham khảo

7.1. How To Make Portable Applications

7.2. Free Portable Apps Creator 0.972 beta tutorial

7.3. Create portable application Using Portable Application creation master

7.4. How To Create Your Own Portable Program (trong 

http://pocketprograms.blogspot.com/)

7.5. How to make Portable with NSIS

8. Một số trang cung cấp phần mềm portable

8.1. http://portableapps.com/apps

8.2. http://portableappz.blogspot.com/

8.3. http://punsh.at.ua/ (dịch sang tiếng Anh)

8.4. http://www.thinstallsoft.com/

8.5. http://portable-apps.net/

8.6. http://www.pendriveapps.com/

8.7. http://www.portablefreeware.com/

8.8. http://baltagy.blogspot.com/

8.9. http://portableturk.com/apps/portable-apps/

9. Nếu có thắc mắc gì về các bước tạo Portable với NSIS, các bạn có thể tham 
khảo thêm trang thuần Việt http://portableappsviet.com/ do bạn 

NGOCHUY1991

đam mê Portableapps, nghiên cứu kỹ trong vòng hơn 6 tháng và với mục đích chia 
sẻ, trao đổi kinh nghiệm với mọi người nên đã trình bày hướng 

dẫn rất chi tiết thành nhiều bài ở trang này. 

B. Nguyên lý hoạt động của phần mềm Portable
Tham khảo

1. Test PortableApps

2. Theo dõi truy xuất hệ thống file và registry của một ứng dụng bất kỳ với 
ProcessMonitor

3. Real-time monitor với ProcessHacker

4. SysTracer Portable v2.6 – Track file and registry changes in your computer

Việc tạo Portable là lập trình lại phần mềm nên việc tìm hiểu nguyên lý hoạt 
động của Portable (còn gọi là test Portable) cũng không kém phần 

quan trọngtrong việc không chỉ đảm bảo sự hoạt động ổn định của mọi bản 
Portable mà còn có ích trong việc sử dụng bất cứ ngôn ngữ lập trình 

khác ngoài NSIS để tạo

Portable (ví dụ như tạo Portable với file .bat, .cmd chứa những lệnh của DOS). 
Một số phần mềm có thể giúp bạn theo dõi quá trình này là 

Process Monitor,

Process Hacker, Systracer. 

Với Systracer, bạn tạo bản snapshot thứ 1 trước khi run portableapps. Trong khi 
run và trước khi exit portableapps, hãy tạo bản snapshot thứ 2. 

Đến đây

bạn cứ sử dụng portableapps như bình thường. Cuối cùng, sau khi exit khoảng 
10s, tạo bản snapshot thứ 3, kết thúc công đoạn tạo snapshot. 

Vậy với 3 bảnsnapshot trên, công việc test portableapps đã sẵn sàng. Rất đơn 
giản, bạn chỉ việc Compare bản snapshot thứ 1 và thứ 3. Còn 

muốn xem những thay đổi trong

hệ thống trong khi ứng dụng đang hoạt động nhằm mục đích nghiên cứu, chỉ việc 
Compare snapshot thứ 1 và thứ 2.

1. Với Portable dạng nâng cao

1.1. Chuẩn bị môi trường máy tính trước khi chạy Portable

1.1.1. Run Launcher.

1.1.2. Backup file, folder hệ thống.

1.1.3. Restore/Copy file, folder của Portable vào hệ thống.

1.1.4. Backup registry hệ thống thành file .reg chứa key hệ thống.

1.1.5. Restore/Import file .reg chứa key Portable vào Registry.

1.2. Môi trường máy tính trong khi chạy và trước khi exit Portable

1.2.1. Run App.

1.2.2. Exit App.

1.3. Khôi phục lại môi trường máy tính như ban đầu sau khi exit Portable

1.3.1. Backup file, folder của Portable.

1.3.2. Delete file, folder của Portable

1.3.3. Restore file, folder hệ thống.

1.3.4. Backup key Portable trong Registry thành file .reg chứa key Portable.

1.3.5. Delete key Portable trong Registry.

1.3.6. Restore file .reg chứa key hệ thống vào Registry.

1.3.7. Exit Launcher.

2. Với phần mềm cài đặt hay Portable đơn giản chỉ có các bước sau (nên sẽ để 
lại key, file rác trong máy)

2.1. Restore/Copy file, folder của phần mềm/Portable vào hệ thống.

2.2. Restore/Import file .reg chứa key phần mềm/Portable vào Registry. 

C. Các đặc điểm của phần mềm cài đặt
Việc kiếm cho bản thân 1 chương trình Portable trên mạng là không khó nhưng để 
tự làm ra 1 phần mềm portable thì không phải ai cũng làm được. 

Đặc biệt

việc tạo ra 1 phần mềm Portable có những đặc điểm của dạng Portable nâng cao 
như khái niệm cũng như không bị ảo hóa như Portable "ảo" lại 

càng đòi hỏi

sự tỉ mỉ, phức tạp hơn trong cách làm. Bởi các bạn sẽ phải căn cứ vào các đặc 
điểm đặc trưng, riêng biệt của mỗi phần mềm để làm thành bản 

Portable như

ý muốn bao gồm những đặc điểm sau (Các dòng đánh dấu * là các trường hợp khó 
tạo Portable):

1. Đặc điểm bản quyền

1.1. Miễn phí mã nguồn mở: được phép tự do sử dụng, chia sẻ phần mềm.

1.2. Có phí mã nguồn đóng: phải có Key, Name đăng ký (Serial key, keygen – key 
maker) hoặc Crack, Patch để có thể sử dụng được phần mềm.*

2. Đặc điểm file thực thi “.exe”

2.1. Một file “.exe”: phần mềm chỉ có 1 file thực thi .exe của chính nó (dạng 
phổ biến).

2.2. Nhiều file “.exe”: phần mềm có nhiều file thực thi .exe của chính nó. Vd: 
Microsoft Office, Nero (ghi đĩa),…*

2.2.1. Những file .exe không liên quan đến nhau: phần mềm không có chức năng mở 
file B.exe thông qua file A.exe.

2.2.2. Những file .exe có liên quan đến nhau: phần mềm có chức năng mở file 
B.exe thông qua file A.exe. Ví dụ với phần mềm ghi đĩa Nero, nếu mở 

file 

NeroStartSmart.exe (trong thư mục C:\Program Files\Nero\Nero8\Nero StartSmart) 
-> click vào Tab Rip and Burn -> chọn tiếp tùy chọn trong đó 

(ví dụ BurnData Disc) -> nó sẽ mở file Nero.exe (trong thư mục C:\Program 
Files\Nero\Nero8\Nero Burning Rom).

3. Đặc điểmvề key phần mềm trong Registry khi cài đặt phần mềm

3.1. Chỉ thêm (add) key của phần mềm vào Registry của Windows (dạng phổ biến).

3.2. Thêm và sửa (modify) cả key của Windows trong Registry. Vd: phần mềm đóng 
băng, Antivirus,…*

4. Đặc điểmvề file khi cài đặt

Thêm file (.dll,..) vào những thư mục của phần mềm trong ổ C: như C:\Windows 
hoặc 

C:\Windows\system32, C:\Program Files\Common Files, C:\Documents and 
Settings\{Tên người dùng}\Application Data (WinXP) hoặc 

C:\Users\{Tên người dùng}\AppData\Roaming

(Win7),...5. Đặc điểm về file service: .sys, .exe, .dll *

Tham khảo Kích hoạt “Running” cho services portableapps bằng tay thông qua 
ProcessHacker

Service thường thuộc quyền sở hữu của những phần mềm A cần sử dụng kết hợp với 
phần mềm B khác (ví dụ Internet Download Manager cần 

sử dụng kết hợp với

trình duyệt web) có chức năng theo dõi phần mềm B. Đến khi phát hiện tình huống 
cần đến chức năng của phần mềm A thì nó sẽ gọi file thực thi 

chính củaphần mềm A hoạt động. Ví dụ: Service của Internet Download Manager có 
chức năng theo dõi trình duyệt web (mà nó hỗ trợ) để sẵn 

sàng bắt link, hỗ trợ tăng

tốc download khi cần thiết. Nếu nó không hoạt động thì khả năng phát hiện link 
và hỗ trợ tăng tốc download là không còn.

6. Những thiết lập khi sử dụng phần mềm

Được lưu trong Registry và những thư mục của phần mềm trong ổ C:. 

D. Tiếp theo là hướng dẫn

Tham khảo:

1. Hướng dẫn sử dụng ApplicationPortableTemplate.nsi

2. Nguyênlý hoạt động của PortableApps phát triển từ 
ApplicationPortableTemplate.nsi Format

3. Phòng thử nghiệm VirtualBox – Nơi thực tập cho dân vọc máy tính

Các bạn cần chuẩn bị những phần mềm cấn thiết sau:

1. Total Uninstall Portable (TU): dùng để quét toàn bộ hệ thống trước khi cài 
đặt và tìm ra những thay đổi sau khi cài đặt. Download link MF 

mediafire.com/?72rr29kd0f1574y, TurboBit.net, LetItBit.net, DepositFiles.com.

1.1. Sau khi tải về, ngắt kết nối Internet (Open Network and Sharing Center -> 
Change adapter settings -> Right click vào biểu tượng màn hình 

xanh -> Disable).

1.2. Giải nén Total_Uninstall.exe -> Mở thư mục Total Uninstall -> Mở tập tin 

TotalUninstall5Portable.exe -> Vào Инструменты (Tools) -> Настройки...

(Options...) -> Chọn ngôn ngữ là English -> OK.

1.3. Vào Help -> Register... -> Đăng ký với name, key có trong tập tin 
SERIAL.txt.

1.4. Vào Tools -> Options... -> Web updates -> Chọn Check update method là 

Manual (vì bản Portable này tạo từ bản đã crack nên có thể đổi tùy chọn update 
method tùy ý, còn nếu là bản thường thì tùy chọn update 

method là Automatic

ở dạng "chìm" và không thể thay đổi) -> OK.

1.5. Mở lại kết nối Internet (Open Network and Sharing Center -> Change adapter 
settings -> Right click vào biểu tượng màn hình đen -> Enable) 

->Sử dụng

thoải mái!

Lưu ý: để gỡ sạch 1 phần mềm A có 2 trường hợp

TH1: phần mềm A đã cài đặt trên máy trước khi sử dụng TU

Dùng công cụ xóa bất kỳ gỡ phần mềm A -> Sau khi gỡ lần 1 phần mềm A, monitor 
quá trình cài đặt của phần mềm A bằng TU: Vào menu File -> 

Install new...

-> Next -> Chọn file cài đặt của phần mềm A trong mục Setup program path -> 
Launch setup program -> Program is installed -> Complete the 

monitoring processlater -> Gỡ bỏ lần 2 phần mềm A bằng TU. 

TH2: phần mềm A dự định sử dụng nhưng vẫn chưa cài đặt trên máy: tương tự 
trường hợp 1 từ bước monitor.

Nếu muốn đơn giảnhơn các bạn có thể sử dụng phần mềm đóng băng Shadow Defender

(ACKCR-YUAWF-8RWPW-NV3UI-11ISP) để máy tính trở về trạng thái trước khi cài 
đặt: đóng băng máy tính -> cài đặt phần mềm -> tạo Portable 

-> gỡ đóngbăng

máy tính2. IcoFX Portable: trích 1 Icon bất kì để làm Icon cho file thực thi. 
Hướng dẫn sử dụng

3. Notepad++ Portable: dùng để edit code cho các phần mềm lập trình (ví dụ như 
NSIS). Phần mềm này hỗ trợ edit rất nhiều định dạng file (".nsi", 

".ini",

".nsh",...), tính năng Highlighting có chức năng đánh màu cho các câu lệnh theo 
từng nhóm khác nhau, giao diện thân thiện, dễ sử dụng, hỗ trợ 

mở nhiều

file cùng lúc, tìm kiếm dễ dàng hơn nhờ đánh số thứ tự cho mỗi hàng, rút gọn 
các lệnh như cây thư mục Explorer của Windows…tất cả xem như 

quá hoàn hảo,

xứng đáng thay thế Notepad cổ điển của Window. Hướng dẫn sử dụng: phần 1, phần 2

4. NSIS Portable: sau khi edit code NSIS trong tập tin Template.nsi cho ứng 
dụng cần làm portable (được viết bằng ngôn ngữ lập trình NSIS), ta 

sẽ biên

dịch nó bằng NSIS Portable để tạo ra file .exe. 

5. Template.nsi: là tập tin chứa tập lệnh (các lệnh) đặc trưng được viết theo 
ngôn ngữ lập trình của NSIS và có đuôi là ".nsi". Tập tin Template.nsi 

có

nhiệm vụ chứa những thiết lập cần thiết để NSIS biên dịch và tạo ra file thực 
thi ".exe" thực hiện các chức năng của Portable. Các bạn tra từ điển Anh-Việt 
sẽ thấy từ "Template" có nghĩa là "mẫu". Ở đây Application Portable 
Template.nsi (phiên bản 2.7.3) là một template được xây dựng dựa trên 
PortableApps.com

Format 1.0 nên nói rằng ApplicationPortableTemplate.nsi thuộc PortableApps.Com 
Format thì cũng đúng. Tuy nhiên hiện tại thì PortableApps.Com Format đã cho ra 
phiên bản mới PortableApps.com Format™ 3.0 (2012-04-18) và nó đã thay đổi rất 
nhiều. Bởi nó được xây dựng bằng PortableApps.com Launcher, 

một ứng dụng mã nguồn mở do

Chris Morgan – một thành viên “già làng” của PortableApps.Com phát triển nên 
tác giả 

NGOCHUY1991 đã quyết định chỉnh sửa lại ApplicationPortableTemplate.nsi (hỗ trợ 
cho PortableApps.com Format™ 1.0) thành 

Application Portable Template (Fixed By PAV).nsi (nằm trong đường dẫn 
Application Portable Template (Fixed By PAV)\Other\${APP} Portable 

Source). Sau khi

tải về bạn mở file Application Portable Template (Fixed By PAV).nsi bằng 
Notepad++ Portable và quan sát ở dòng thứ 4

Requiredplugins: NewAdvSplash, Registry, FindProc, Dialogs

Đây chính là những plugin mà file Application Portable Template (Fixed By 
PAV).nsi

đòi hỏi NSIS Portable phải có đủ (ở đây là 4 plugin). Vì vậy bạn vào đường dẫn 

NSISPortable\App\NSIS\Plugins kiểm tra xem có đủ những plugin này chưa (một 
nguyên tắc là bạn khai báo plugin nào trong code thì plugin đó 

phải tồn tại

trong folder này, danh sách plugins trong folder này chưa thể cập nhập hết, vì 
đơn giản plugins có rất nhiều, chúng có thể được tạo ra bởi bất kỳ 

ai cókiến thức về code NSIS), nếu chưa thì vào trang Category Plugins -> 
Download plugin còn thiếu về (ở bản NSIS Portable này thì plugin còn 

thiếulà Dialogs.dll)

-> Giải nén file .zip -> Vào folder sau khi giải nén -> Tìm đến file có đuôi 
.dll (đây là đuôi của Plugin trong NSIS) -> Bỏ vào folder 

NSISPortable\App\NSIS\Plugins. Tham khảo thêm bài Compile code NSIS với NSIS 
Portable.

6. Phần mềm được tạo Portable

6.1. TreeSize Free thông thường người dùng máy tính rất mất thời gian trong 
việc quan sát nhằm mục đích quản lý để lập ra cây folder. Windows 

đã cung cấp

trình Explorer mặc định nhưng nó có nhược điểm chỉ show cây folder tại cửa sổ 
bên tay trái, còn nội dung của các folder đó thì phải quan sát bên 

cửa sổtay phải. Vì vậy, TreeSize Free không chỉ giúp bạn show các folder con mà 
còn show hết các file (bao gồm tên file, loại file, kích cỡ…) bên 

trong các folder

đó.

6.2. Office Tab Từ lâu, phương thức duyệt nhiều cửa sổ trang web theo thẻ Tab 
đã được sử dụng rộng rãi trong hầu hết trình duyệt (như Firefox). 

Nếu muốn

áp dụng cách duyệt file theo thẻ Tab trong Microsoft Word, Excel, PowerPoint, 
bạn có thể nhờ sự trợ giúp của tiện ích OfficeTab. Điểm độc đáo 

của OfficeTab

so với các phần mềm cùng chức năng: cho phép bạn tùy chọn kiểu dáng và vị trí 
của thanh chứa thẻ theo nhu cầu (phía trên, phía dưới, bên trái, 

hoặc bên

trái giao diện Word, Excel, PowerPoint). (Nguồn download 

Office Tab 7.0 Full crack (Duyệt tài liệu theo thẻ) đã hỗ trợ Powerpoint2010 và 
các ứng dụng khác download link 

mediafire.com/?wrc2fc5fbztmjbo) 

E. Vài nét về file Application Portable Template 
(Fixed By PAV).nsi Và cách thiết lập với những file, folder của PortableTham 
khảo

1. Sửa lỗi cơ bản trong Application Portable Template.nsi

2. Biến và Hằng trong code NSIS3. Hướng dẫn sử dụng 
ApplicationPortableTemplate.nsi

Khi mở bằng Notepad++ Portable1. Các thành phần và màu sắc

Để hiểu rõ hơn về các thành phầntrong file Application Portable Template (Fixed 
By PAV).nsi, các bạn có thể tham khảo thêm ở file help NSIS 

Portable\App\NSIS\NSIS.chmcó chứa những hướng dẫn chi tiết, đầy đủ về code NSIS.

1.1. Phần giải thích (được Notepad++ Portable gán màu xanh lá) quy định bắt đầu 
bằng dấu ; hoặc /* giúp bạn hiểu rõ hơn nội dung của những 

dòng code. Vídụ

; # Change the following constants depending on the application you want to 
make portable

1.2. Phần hằng (được Notepad++ Portable gán màu cam). Hằng trong code cũng 
tương tự như trong toán.

1.2.1. Loại 1 làhằng đã được khai báo đồng thời đã được gán sẵn 1 giá trị mặc 
định, khi cần sử dụng ngay. Ví dụ muốn dùng hằng $EXEDIR thì chỉ 

việc đặtnó vào nơi bạn muốn dùng, không cần khai báo và gán trị nào hết. Mặc 
định đường dẫn của hằng 

$EXEDIR là nơi thư mục chứa file chạy ứng dụng đó. Mỗi hằng trong danh sách 
dưới đây đã được gán 1 đường dẫn mặc định trên HĐH, để biết 

thêm chi tiết về

các đường dẫn này, các bạn có thể tham khảo thêm trong NSIS Manual

$PROGRAMFILES, $PROGRAMFILES32, $PROGRAMFILES64, $COMMONFILES, $COMMONFILES32, 
$DESKTOP, 

$EXEDIR, $EXEFILE, $EXEPATH, ${NSISDIR}, $WINDIR, $SYSDIR, $TEMP, $STARTMENU, 
$SMPROGRAMS, 

$SMSTARTUP, $QUICKLAUNCH, $DOCUMENTS, $SENDTO, $RECENT, $FAVORITES, $MUSIC, 
$PICTURES, 

$VIDEOS, $NETHOOD, $FONTS, $TEMPLATES, $APPDATA, $LOCALAPPDATA, $PRINTHOOD, 
$INTERNET_CACHE, 

$COOKIES, $HISTORY, $PROFILE, $ADMINTOOLS, $RESOURCES, $RESOURCES_LOCALIZED, 
$CDBURN_AREA, 

$PLUGINSDIR, $HWNDPARENT

1.2.1.1. ${APP} là hằng chỉ định tên ứng dụng được làm Portable ví dụ như 
TreeSize Free

!define LONGAPP       "${APP}"         ; long name of your application used for 
desriptive fields (if the exe should not contain a space, but the 

description could)1.2.1.2. ${PNAME} là hằng chỉ định tên ứng dụng Portable (lưu 
giá trị là chuỗi ${APP}

Portable) ví dụ như TreeSize Free Portable

!define SPLASHIMAGE "${PNAME}.jpg"

1.2.1.3. $APPDATA là hằng chỉ định đường dẫn mặc định đến folder chứa các cấu 
hình chính của những ứng dụng được cài đặt trực tiếp trên 

máy tính 1.2.1.3.1. Cấp Users

Với Win XP: C:\Documents and Settings\{Tên người dùng}\Application Data

Với Win 7: C:\Users\{Tên người dùng}\AppData\Roaming

!define SETTINGSFOLDERSUSERS "$APPDATA\JAM Software"

1.2.1.3.2. Cấp All Users

Với Win XP: C:\Documents and Settings\All Users

Với Win 7: C:\ProgramData

!define SETTINGSFOLDERALLSUSERS "$APPDATA\MARTAU"

1.2.1.4. $EXEDIR là hằng chỉ định đường dẫn mặc định đến folder chứa file quản 
lý .exe

của ứng dụng Portable ví dụ như TreeSize Free Portable.exe

1.2.1.5. ${APP} là hằng chỉ định đường dẫn mặc định đến folder chứa file thực 
thi gốc 

.exe của ứng dụng được làm Portable ví dụ như TreeSize Free.exe.

1.2.1.6. $WINDIR là hằng chỉ định đường dẫn mặc định đến folder C:\Windows

1.2.1.7. $SYSDIR là hằng chỉ định đường dẫn mặc định đến folder 
C:\Windows\System32

1.2.2. Loại 2 là những hằng số mà các bạn phải tự khai báo và gán giá trị cho 
nó nên thường đứng sau chữ !define. Ví dụ khi sử dụng hằng số 

${EXE},đây

là hằng loại 2 nên phải khai báo cho nó trước khi sử dụng nghĩa là gán cho hằng 
số ${EXE} giá trị rỗng, biểu thị bằng 2 dấu ngoặc kép liên tiếp. 

!define EXE ""

1.3. Phầnbiến (được Notepad++ Portable gán màu đen). Ví dụ $PROGRAMDIR. Biến 
trong code cũng tương tự như trong toán. Bạn có thể đặt tên 

cho một vấn đề

nào đó chưa biết là biến, sau đó dựa trên những thứ liên quan đến nó để lập hàm 
hay phương trình tìm lời giải. Trong code thì biến phải được khai 

báo trước

khi thực hiện bất kỳ một hàm nào, và nó tuân theo nguyên tắc “mỗi biến chỉ có 1 
ô nhớ”, nếu trước đó bạn đã gán giá trị cho biến nhưng sau này 

lại tiếp

tục gán cho biến đó 1 giá trị khác thì cuối cùng biến sẽ nhận giá trị mới bạn 
vừa gán, không có nghĩa là nó không nhận giá trị cũ, nhưng kể từ thời 

điểm

bạn gán lần nữa thì nó sẽ nhận trị mới. Điều này vô cùng hữu ích nếu ai đó 
không muốn code của họ chứa quá nhiều biến. Thay vào đó, họ sẽ 

chỉ khai báo

1 biến rồi dùng biến đó cho nhiều công đoạn khác nhau, cứ mỗi lần sử dụng biến 
xong có thể họ lại gán trị rỗng cho biến này hoặc gán 1 trị mới 

cho 1 công

đoạn mới, kiểu như reset lại mặc định của biến ấy mà. Trong NSIS, biến gồm 2 
loại.

1.3.1. Loại 1 là những biến đã được khai báo sẵn trong code NSIS, và do đó khi 
sử dụng không cần đến công đoạn khai báo nữa, chỉ cần nêu tên 

biến và sử

dụng ngay. Ví dụ nếu muốn dùng biến $INSTDIR thì đem ra dùng luôn, không khai 
báo gì hết. Danh sách các tên biến loại 1 này gồm

$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $R0, $R1, $R2, $R3, $R4, $R5, $R6, $R7, 
$R8, $R9, $INSTDIR, $OUTDIR, $CMDLINE, $LANGUAGE

1.3.2. Loại 2 là những biến bạn phải tự khai báo, nếu chưa khai báo mà sử dụng 
ngay như biến loại 1 thì NSIS báo có lỗi. Ví dụ khi muốn sử dụng 

biến $PROGRAMDIR

thì trước đó phải khai báo biến này như sau

Var PROGRAMDIR ; holds the path to the above EXE file

1.4. Phần hàm (được Notepad++ Portable gán màu đen hoặc màu xanh dương).

1.4.1. Ở dòng 400 hàm StrCpy thực hiện lệnh copy đường dẫn chứa file thực thi 
gốc 

.exe của ứng dụng đến biến số $PROGRAMDIR

StrCpy "$PROGRAMDIR" "$EXEDIR\App\${APP}"

1.4.2. Các hàm InitFilesAllUsers, InitFoldersAllUsers và CleanFoldersAllUsers, 

CleanFilesAllUsers thực chất như hàm InitFilesUsers, InitFoldersUsers hay 

CleanFoldersUsers, CleanFilesUsers nhưng được chỉnh sửa lại hằng số và thêm vào 
hàm:

SetShellVarContext all1.4.3. Hai hàm chính: ValuesToStack và RegFileToStack 
giúp nhận biết các đường dẫn được ngăn cách bởi || trong một số 

hằng như DOREG (nếu bật REGKEYS),DOFILESUSERS (nếu bật SETTINGSFILESUSERS), 
DOFOLDERSUSERS (nếu bật 

SETTINGSFOLDERSUSERS),…!ifdef DOREG | DOFILESUSERS | DOFILESALLUSERS | 
DOFOLDERSUSERS | DOFOLDERSALLUSERS | 

DOPATH2. Nguyên lý hoạt động của Portable được thể hiện trong những dòng từ 271 
đến 

286Call InitINI ; apply INI settings

Call InitVars ; set default variable values when no INI is used

Call InitInstall ; installs additional files, e.g. sources or INI-files

Call Init ; other initalizations before any registry, folder, or fileoperations 
are done

Call InitReg ; backup current reg, apply portable reg

Call InitFilesUsers ; rename current files, apply portable files

Call InitFoldersUsers ; rename current folders, apply portable folders

Call InitFilesAllUsers ; can be used for custom settings like e.g. file 
manipulations, empty by default

Call InitFoldersAllUsers ; can be used for custom settings like e.g. file 
manipulations, empty by default

Call RunApp ; run app

Call CleanFoldersAllUsers ; can be used for custom cleanup like e.g. file 
manipulations, empty by default

Call CleanFilesAllUsers ; can be used for custom cleanup like e.g. file 
manipulations, empty by default

Call CleanFoldersUsers ; copy portable folders, delete portable folders, 
restore original folders

Call CleanFilesUsers ; copy portable files, delete portable files, restore 
original files

Call CleanReg ; copy reg, restore original reg

Call Clean ; Absolute last things to do, cleanup

Tạiđây bạn sẽ thấy cách trình bày “đệ quy” tên danh sách các tiến trình chính – 
được thực thi bởi file quản lý ${APP} Portable.exe. Từ dòng 271 

đến279,

công việc chính mà file quản lý sẽ làm là chuẩn bị trước môi trường cần thiết 
cho ứng dụng hoạt động như backup,…Dòng 280, hàm RunApp sẽ 

thực hiện việc

gọifile thực thi chính của ứng dụng cần làm portable. Từ dòng 281 đến 286, file 
quản lý sẽ cập nhập mới cho files, folders cấu hình và .reg file của 

ứng

dụng, sau đó khôi phục lại môi trường như trước khi khởi chạy ứng dụng 
portable. Trình tự thực hiện của nó theo đúng thứ tự từ trên xuống dưới. 

Cụthể

từng hàm như thế nào, các bạn xem từ dòng 288 trở xuống.

3. Những phần cần bổ sung vào file Application Portable Template (Fixed By 
PAV).nsi

Cácbạn thêm vào giữa " " hoặc vào bổ sung thêm các hàm

3.1. Với hằng APP: thêm vào giữa " " tên thư mục của ứng dụng ở cấp thấp nhất 
(tên thư mục không theo tên nhà sản xuất ví dụ như JAM 

Software mà là TreeSize

Free) trong thư mục cài đặt Program Files.

!define APP ""  ; insert application name, e.g. "TestApp"; this one is used for 
the final executable an in the directory structure

3.2. Với hằng VER: thay 0.0.0.0 thành phiên bản ứng dụng Portable bằng cách 
click phải vào file thực thi .exe của ứng dụng, chọn 

Properties\Details và

xemở dòng File version hoặc Product version để biết số version của ứng dụng.

!define VER "0.0.0.0"   ; insert version of launcher,first two digits are 
version numbers, last digit is packet revision

3.3. Với hằng EXE: thêm vào giữa " " tên file thực thi chính của ứng dụng được 
làm Portable kèm định dạng .exe. Vì portable yêu cầu quyền admin 

nênnếu

có 2 file 

Program.exe và Program(Admin).exe bạn có thể chọn file Program(Admin).exe

khai báo cho hằng EXE.

!define EXE ""  ; insert program exe name, e.g. "testapp.exe"

3.4. Với hằng REGKEYS: thêm vào giữa " " tên file .reg của ứng dụng, quy ước 
tên trùng với giá trị của hằng ${APP}, ví dụ TreeSize Free.reg (nếu 

ứng dụng

không có file 

.reg, hãy thêm dấu ; trước !define REGKEYS). Nếu Portable của bạn có sử dụng 
file 

.reg và có bật hàm REGKEYS thì bắt buộc bạn phải đặt file .reg đó vào folder 
Data của ứng dụng Portable, nếu không file quản lý sẽ không thể 

thực hiện tính

năng copy – update – restore file .reg và dẫn đến tình trạng ứng dụng không 
nhận phiên bản PRO (với những ứng dụng lưu khóa PRO VERSION 

trong Registry),

cũng như để lại rác trong Registry sau khi sử dụng.

!define REGKEYS ""3.5. Theo NSIS, nó chỉ định nghĩa chính xác hằng $EXEDIR khi 
trước nó có đặt hàm 

OutFile. Tuy nhiên trong khai báo cho hàm OutFile có thêm hằng ${PNAME} nên 
phải đặt OutFile sau !define PNAME nên sẽ có trình tự code 

như sau:!define PNAME "${APP} Portable" 

OutFile "..\..\${PNAME}.exe" 

!define SETTINGSFILESUSERS 
"$EXEDIR\App\${APP}\RegWorkshop.ini||$EXEDIR\App\${APP}\undo.dat||$EXEDIR

\App\${APP}\undo.idx"

Lưu ý: 

3.5.1. Trong lập trình, chỉ cần khai báo 1 lần cho 1 hằng (không bao giờ có 
khai báo 2 lần cho 1 hằng) nên dòng !define PNAME chỉ có một và nó 

phải được

đặt trước khi nó được sử dụng (trong ví dụ là dùng nó ngay trước hàm OutFile).

3.5.2. Chỉ có một hằng $EXEDIR là ngoại lệ phải đặt thêm hàm OutFile trước nó. 
Còn những hằng khác như $WINDIR thì nó đã gán sẵn đường 

dẫn đến folder Windows

của ổ cài hệ điều hành.3.6. Bạn phải thêm vào đoạn code khai báo trị all cho 
hàm SetShellVarContext trước khi sử dụng hằng 

SETTINGSFILESALLUSERS hay SETTINGSFOLDERSALLUSERS

nếu muốn sử dụng ở cấp All Users, đoạn code khai báo trị current cho hàm 

SetShellVarContext trước khi sử dụng hằng SETTINGSFILESUSERS hay 

SETTINGSFOLDERSUSERS nếu muốn sử dụng ở cấp Users.

SetShellVarContext allStrCpy "$R0" "${SETTINGSFOLDERSALLUSERS}" ; copy constant 
to working variable

SetShellVarContext current

StrCpy "$R0" "${SETTINGSFOLDERSUSERS}" ; copy constant to working variable

3.7. Với hằng SETTINGSFILESUSERS: thêm vào giữa " " đường dẫn đến file cấu hình 
của ứng dụng (thuộc cấp Users). Dùng để lưu những file 

cấu hình đơn lẻ

và phải khai báo đầy đủ đường dẫn đến file cấu hình đó kèm định dạng file. Ví 
dụ RegWorkshop.ini

sẽ tương ứng với File1.dat, undo.dat sẽ tương ứng với File2.dat, và undo.idx sẽ 
tương ứng với File3.dat. Chỉ việc copy 3 file đó vào folder 

SettingsFiles

Users và đổi lại 

tên.định dạng tương ứng như trên là xong (nhưng nhớ là trước tiên bạn phải 
thiết lập hiển thị đuôi cho file, rồi click vào file cần đổi, nhấn F2, bôi 

đen

luôn cả định dạng file rồi đổi tên thành File1.dat, File2.dat, File3.dat,…). 
Chú ý rằng nếu bạn sử dụng 2 đường dẫn trở lên (tức có sử dụng dấu || 

để phân

cách cho việc khai báo các file…) trong chuỗi nằm giữa " " trong file .nsi thì 
thứ tự 1, 2, 3…sẽ được quy ước cho các file theo thứ tự từ trái qua 

phải

trong chuỗi nằm giữa " " trong file .nsi tương ứng với File1.dat, 

File2.dat, File3.dat,…ở thư mục SettingsFiles Users.

!define SETTINGSFILESUSERS 
"$EXEDIR\App\${APP}\RegWorkshop.ini||$EXEDIR\App\${APP}\undo.dat||$EXEDIR

\App\${APP}\undo.idx"

3.8. Với hằng SETTINGSFILESALLUSERS: thêm vào giữa " " đường dẫn đến file cấu 
hình của ứng dụng (thuộc cấp All Users). Cách thiết lập 

tương tự hằng 

SETTINGSFILESUSERS.

!define SETTINGSFILESALLUSERS ""

3.9. Với hằng SETTINGSFOLDERSUSERS: thêm vào giữa " " đường dẫn đến folder cấu 
hình của ứng dụng (thuộc cấp Users) có tên có thể theo 

tên nhà sản xuất(như JAM Software) trong thư mục Application Data. Nếu phần mềm 
lưu thư mục cấu hình trong 

%APPDATA%,lưu folder chứa project trong My Documents (hoặc Documents) thì bạn 
hãy Copy những thư mục này (nếu có) vào thư mục 

SettingsFolders Users rồi

đổi tên những thư mục này thành các tên Folder1.dat, Folder2.dat, 
Folder3.dat,…Chú ý rằng nếu bạn sử dụng 2 đường dẫn trở lên (tức có sử 

dụng dấu || để

phân cách cho việc khai báo các folder…) trong chuỗi nằm giữa " " trong file 
.nsi thì thứ tự 1, 2, 3…sẽ được quy ước cho các folder theo thứ tự từ 

trái

qua phải trong chuỗi nằm giữa " " trong file .nsi

tương ứng với Folder1.dat, Folder2.dat, Folder3.dat,…ở thư mục SettingsFolders 
Users.

!define SETTINGSFOLDERSUSERS ""

3.10. Với hằng SETTINGSFOLDERSALLUSERS: thêm vào giữa " " đường dẫn đến folder 
cấu hình của ứng dụng (thuộc cấp All Users). Cách thiết 

lập tương tự hằng

SETTINGSFOLDERSUSERS.

!define SETTINGSFOLDERSALLUSERS ""

3.11. Với hằng USEREGKEYSFILE: giá trị “TRUE” đồng nghĩa với việc nếu tồn tại 
file 

.reg trong folder Data của ứng dụng portable, nó sẽ sử dụng file .reg đó thay 
vì file .reg

được định nghĩa trong !define REGKEYS.

!define USEREGKEYSFILE "TRUE"

3.12. Với hằng DELETEREGKEYS: giá trị “TRUE” đồng nghĩa với việc nếu bạn có 
file 

.reg và hệ thống Registry của bạn cũng tồn tại các key trong file .reg đó, sau 
khi file quản lý tiến hành backup registry, nó sẽ xóa đi các key đang 

tồntại trong Registry và tiến hành Merge những key trong file .reg được bạn 
định nghĩa ở !define REGKEYS.

!define DELETEREGKEYS "TRUE"

3.13. Với hằng INSTALLSOURCES: giá trị “TRUE” đồng nghĩa với việc khi bạn khởi 
động file quản lý ${APP} Portable.exe, nó sẽ add vào folder 

Other\${PNAME}

Source

các file như ${PNAME}.ico, ${PNAME}.jpg, Readme.txt.

!define INSTALLSOURCES "TRUE"

3.14. Với hằng INSTALLDEFAULTS: giá trị “TRUE” đồng nghĩa với việc khi khởi 
động file quản lý ${APP} Portable.exe, nó sẽ add file .reg mặc 

định vào folder

Data (nếu như trên bạn có sử dụng hằng REGKEYS). Tuy nhiên nó không cần thiết 
do đó các bạn nên để như mặc định là "FALSE".

!define INSTALLDEFAULTS "FALSE"

3.15. Thêm dấu ; ngay trước hàm để vô hiệu hóa hàm (hay biến hàm thành phần 
giải thích). Ví dụ nếu hằng SPLASHIMAGE được định nghĩa thì 

nósẽ khởi động

một file ảnh có tên ${APP} Portable.jpg trước khi bắt đầu launch file thực thi 
chính và bạn phải chuẩn bị một file ảnh ${APP} Portable.jpg đặt 

trong folder

${PNAME} Source của ứng dụng portable. Hãy thêm dấu ; trước !define SPLASHIMAGE 
nếu bạn muốn hủy bỏ đi hằng này

; !define SPLASHIMAGE "${PNAME}.jpg"

4. Khi mở file ${APP}.reg (ví dụ Office Tab.reg) bằng Notepad++ Portable nếu có 

4.1. Chứa đường dẫn C:\\Windows\\System32 (hoặc C:\\Windows) thì bạn vẫn để 
nguyên bởi khi kích hoạt file quản lý ${PNAME}.exe (ví dụ 

như Office Tab Portable.exe)

nó sẽ đổi ngược lại chính xác tên của những file File1.dat, File2.dat,... (bạn 
đã đổi tên ở phần 2.7 trên) thành tên nguyên gốc (lúc chưa đổi tên 

trong

file 

${PNAME}.nsi) rồi cho vào thư mục C:\Windows\System32 (hoặc C:\Windows). Sau đó 
file thực thi chính ${APP}.exe sẽ truy xuất file 

${APP}.reg và lúc này thì

những file với tên nguyên gốc đã tồn tại trong C:\Windows\System32 (hoặc 
C:\Windows). 

4.2. Chứa đường dẫn C:\\Program Files\\Tên phần mềm\\Tên file thực thi .exe 
(nếu không có tên nhà sản xuất) hoặc 

C:\\Program Files\\Tên nhà sản xuất\\Tên phần mềm\\Tên file thực thi .exe thì 
phải đổi thành Tên đường dẫn thư mục Portable (có thêm dấu \ 

)\\Tên file quản

lý Portable.exe (Xem bước 7 ở các bước tạo TreeSize Free Portable).

4.3. Chứa đường dẫn C:\\Program Files\\Tên phần mềm (nếu không có tên nhà sản 
xuất) hoặc C:\\Program Files\\Tên nhà sản xuất\\Tên phần mềm 

thì phải đổi

thành 

Tên đường dẫn thư mục Portable (có thêm dấu \ )\\App\\Tên phần mềm (Xem bước 7 
ở các bước tạo Office Tab Portable). 

================================================== ======

F. Các bước tạo Portable cho những phần mềm
F.A. TreeSize Free Portable
Các bạn có thể xem Clip minh họa quá trình làm TreeSize Free Portable (link 
video 

http://www.youtube.com/watch?v=ZFIy00vWe8Q)Và tham khảo bản Portable tại Những 
ứng dụng hỗ trợ tăng tốc truy xuất thông tin

(download link mediafire.com/?dx7jbljhar0u9f0, sau khi tải về thực hiện bước 7 
dưới đây để chỉnh lại đường dẫn của Portable trong file TreeSize 

Free.reg)

Mình xin viết lại hướng dẫn từ video trên

1. Monitor quá trình cài đặt của TreeSize Free bằng TU: Vào menu File -> 
Install new... -> Next -> Chọn TreeSizeFreeSetup.exe trong mục Setup 

program path

-> 

Launch setup program -> Program is installed -> Complete the monitoring process 
later.

2. Trong cửa sổ TU -> Vào thư mục Program Files\JAM Software -> Click phải vào 
tên thư mục TreeSize Free chọn Copy

3. Download Application Portable Template (Fixed By PAV).nsi, giải nén và đặt 
thư mục Application Portable Template (Fixed By PAV) trong ổ 

đĩa liên kết-> Đổi tên thư mục Application Portable Template (Fixed By PAV) 
thành TreeSize Free Portable

3.1. Mở thư mục App -> Paste thư mục TreeSize Free (đã Copy) vào -> Xóa thư mục 

${APP} -> Mở thư mục TreeSize Free -> Xóa 3 tập tin thừa unins000.*.

3.2. Vào thư mục Other -> Đổi tên thư mục ${APP} Portable Source thành TreeSize 
Free Portable Source -> Tiếp tục vào thư mục TreeSize Free 

Portable Source

-> Đổi tên file Application Portable Template (Fixed By PAV).nsi thành TreeSize 
Free Portable.nsi

3.3. Vào thư mục Data -> Xóa 3 thư mục không cần thiết SettingsFiles AllUsers, 

SettingsFolders AllUsers, SettingsFiles Users (tác giả clip nhầm thư mục này là 

SettingsFolders Users) -> Vào thư mục SettingsFolders Users -> Tạo thư mục 

Folder1.dat và nó sẽ tượng trưng cho thư mục JAM Software.

4. Trong cửa sổ TU -> Vào thư mục Application Data\JAM Software -> Click phải 
vào tên thư mục TreeSize Free chọn Copy -> Paste thư mục 

TreeSize Free (đã

Copy) vào thư mục Folder1.dat.

5. Tạo file TreeSize Free.reg: Trong cửa sổ TU -> Vào menu File -> Export -> 

Registry Changes... -> Đặt Filename là TreeSize Free và chọn lưu trong thư mục 

Data -> Click Save.

6. Mở file TreeSize Free Portable.nsi bằng Notepad++ Portable (click phải chọn 
Edit with Notepad++) -> Điền thông tin vào giữa dấu " " để trở 

thành các dòng sau (có thể nhấn Ctrl F để tìm dễ hơn):

!define APP "TreeSize Free"     ; insert application name, e.g. "TestApp"; this 
one is used for the final executable an in the directory structure

!define VER "2.6.0.159"           ; insert version of launcher,first two digits 
are version numbers, last digit is packet revision

!define EXE "TreeSizeFree.exe"            ; insert program exe name, e.g. 
"testapp.exe"

!define REGKEYS "TreeSize Free.reg"

!define SETTINGSFOLDERSUSERS "$APPDATA\JAM Software"

Vì trong thư mục $EXEDIR\App không có thư mục Folder1.dat (khác với thư mục 

$EXEDIR\Data) nên không có chữ \JAM Software ở dòng thứ 400

StrCpy "$PROGRAMDIR" "$EXEDIR\App\${APP}"

7. Mở thư mục TreeSize Free Portable -> Tô đen Copy tên đường dẫn thư mục 

TreeSize Free Portable ở thanh địa chỉ (Address Bar) -> Mở file TreeSize 
Free.reg

bằng Notepad++ Portable (click phải chọn Edit with Notepad++) -> Nhấn Ctrl H để 
hiện cửa sổ Replace -> Điền ở ô Find what là C:\\Program 

Files\\JAM Software\\TreeSize

Free\\TreeSize Free.exe -> Paste phần Tên đường dẫn thư mục TreeSize Free 
Portable vừa Copy vào và thêm dấu \ để trở thành Tên đường dẫn 

thư mục TreeSize

Free Portable (có thêm dấu \ )\\TreeSize Free Portable.exe ở ô Replace with -> 
Replace All -> OK -> Close và Save file TreeSize Free.reg lại.

8. Tính năng Context menu (menu ngữ cảnh) là chức năng khá phổ biến của nhiều 
ứng dụng vì tính tiện lợi cuả nó khi muốn mở 1 tập tin bất kỳ 

bằng việc đơn

giản chọn tên phần mềm trong danh sách hiển thị khi click chuột phải vào tập 
tin đó. Tính năng Context menu của phần mềm sẽ xuất hiện khi có 

phần key tương

ứng với tính năng này của phần mềm đó tồn tại trong Registry hay nói cách khác 
là chúng tồn tại đồng thời. Vì những Portable tạo theo 

Portableapps.com

Format có đặc điểm là xóa sạch key của Portable sau khi exit (tham khảo những 
Portable của trang Portableapps.com) nên nếu muốn vẫn còn tính 

năng Context

menu sau khi exit ứng dụng thì sẽ có 2 trường hợp sau (bước 8 này là tùy ý 
thích):

8.1. Trường hợp bạn sợ mất công nên chấp nhận để lại toàn bộ key (bao gồm cả 
những key không chứa tính năng Context menu) "rác" của 

Portable trong Registry

sau khi exit Portable: Vào thư mục Data -> Mở file TreeSize Free.reg thủ công 
bằng phần mềm Registry Editor có sẵn trong máy để Import key vào 

Registry

của Windows.

8.2. Trường hợp bạn chỉ muốn để lại key rác tối thiểu của chức năng Context 
menu trong Registry và xóa những key còn lại không liên quan đến 

tính năng

này sau khi exit Portable: bạn tách file TreeSize Free.reg ra làm 2 file 
Context.reg và TreeSize Free.reg

8.2.1. Vào thư mục Data -> Click chuột phải chọn New\Text Document -> Mở file 
New Text Document.txt này bằng Notepad của Windows.

8.2.2. Mở file TreeSize Free.reg bằng Notepad++ Portable -> Tô đen, Copy và 
Paste

dòng đầu tiên Windows Registry Editor Version 5.00 trong file TreeSize Free.reg 
vào dòng đầu tiên của file New Text Document.txt -> Nhấn Ctrl 

F để tìm theo từ khóa  Context -> Tô đen, Cut và Paste lần lượt những dòng chứa 
từ Context và cả dòng 

[HKEY_...] đứng ngay trước trong file TreeSize Free.reg vào file New Text 
Document.txt. 

8.2.3. Close và Save file New Text Document.txt lại -> Đổi tên thành 
Context.reg -> Cut và Paste file Context.reg vào thư mục TreeSize Free 

Portable ->Mở file 

Context.regthủ công bằng phần mềm Registry Editor có sẵn trong máy để Import 
key vào Registry của Windows. 
Lưu ý: nếu bạn không thực hiện bước 7mà thực hiện bước 8.2.3. này thì tính năng 
Context menu tuy có xuất hiện nhưng khi bạn click vào thì nó sẽ báo lỗi ngay 
lập tức vì không tìm thấy ứng dụng theo đường dẫn

mà bạn khai báo trong Registry. Vậy nên tốt nhất là bạn chỉnh sửa đường dẫn cho 
phù hợp trước khi load file quản lý hay để những portableapps sử dụng context

menu được hoạt động chính xác.

8.2.4. Close và Save file TreeSize Free.reg (đã chỉnh sửa) và vẫn để ở thư mục 
Data.

9. Sử dụng IcoFX Portable để tạo icon (biểu tượng) cho Portable

9.1. Vào File -> Open... -> Mục Files of type chọn Windows Binary 
(*.exe;*.dll;*ocx;*.icl) -> Mục File name chọn file thực thi TreeSizeFree.exe 
để 

lấy icon của file này -> Click Open -> Click Extract. 

9.2. Click vào biểu tượng Start của Windows trong chương trình IcoFX Portable

(Create Windows Icon From Image) -> Tích chọn toàn bộ -> Click OK -> Vào File 
-> 

Save -> Lưu lại với tên TreeSize Free Portable trong thư mục TreeSize Free 
Portable Source.

10. Cuối cùng là mở file TreeSize Free Portable.nsi bằng NSIS Portable. Chạy 
file 

NSISPortable\NSISPortable.exe. Trong cột Compiler click vào tùy chọn Compile 
NSI scripts rồi kéo thả file TreeSize Free Portable.nsi vào cửa sổ 

hiện ra, nếu mọi chuyện tốt đẹp thì bạn sẽ thấy cửa sổ như hình, nếu không thì 
chương trình sẽ báo lỗi và thông báo lỗi chỗ nào và bạn có thể chỉnh sửa 

cho đúng.

File thực thi TreeSize Free Portable.exe sẽ được tạo ra và lưu ở thư mục 
TreeSize Free Portable.

F.B. Office Tab Portable
Các bạn có thể tham khảo bản Portable tại download link 

mediafire.com/?258dzdufnfping5, sau khi tải về thực hiện bước 7 dưới đây để 
chỉnh lại đường dẫn của Portable trong file Office Tab.reg

Các bước hướng dẫn tương tự trên 

1. Monitor quá trình cài đặt của Office Tab bằng TU: Vào menu File -> Install 
new... -> 

Next -> Chọn SetupOfficeTabEnterprise.exe trong mục Setup program path -> 

Launch setup program -> Cài đặt phần mềm -> Copy file 

Crack\OfficeTabFunction.dll -> Paste đè vào thư mục C:\Windows\System32 -> Đăng 
ký phần mềm với key, name cung cấp trong file 

Crack\Cara Registrasi + Serial.txt -> OK -> Vào lại TU chọn Program is 
installed -> Complete the monitoring process later.

2. Trong cửa sổ TU -> Vào thư mục Program Files\Detong -> Click phải vào tên 
thư mục Office Tab chọn Copy

3. Download Application Portable Template (Fixed By PAV).nsi, giải nén và đặt 
thư mục Application Portable Template (Fixed By PAV) trong ổ 

đĩa liên kết

-> Đổi tên thư mục Application Portable Template (Fixed By PAV) thành Office 
Tab Portable

3.1. Mở thư mục App -> Paste thư mục Office Tab (đã Copy) vào -> Xóa thư mục 

${APP} -> Mở thư mục Office Tab -> Xóa 2 tập tin thừa unins000.*.

3.2. Vào thư mục Other -> Đổi tên thư mục ${APP} Portable Source thành Office 
Tab Portable Source -> Tiếp tục vào thư mục Office Tab Portable 

Source ->

Đổi tên file 

Application Portable Template (Fixed By PAV).nsi thành Office Tab Portable.nsi

3.3. Vào thư mục Data -> Xóa 3 thư mục không cần thiết SettingsFiles AllUsers, 

SettingsFolders AllUsers, SettingsFolders Users.

4. Trong cửa sổ TU -> Vào thư mục C:\Windows\system32 -> Click chọn tập tin đầu 
là 

ArmAccess.dll -> Nhấn Shift click chọn vào tập tin cuối là OTB_Loader.dll để 
chọn 4 tập tin -> Click phải chọn Copy -> Paste vào thư mục 

SettingsFiles Users

-> Đổi tên các tập tin theo thứ tự tên A,B thành File1.dat,..., File4.dat.

5. Tạo file Office Tab.reg: Trong cửa sổ TU -> Vào menu File -> Export -> 
Registry Changes... -> Đặt Filename là Office Tab và chọn lưu trong thư 

mục Data-> Click 

Save.

6. Mở file Office Tab Portable.nsi bằng Notepad++ Portable (click phải chọn 
Edit with Notepad++) -> Điền thông tin vào giữa dấu " " để trở thành 

các dòng

sau (có thể nhấn Ctrl F để tìm dễ hơn):

!define APP "Office Tab"          ; insert application name, e.g. "TestApp"; 
this one is used for the final executable an in the directory structure

!define VER "7.5.0.0"   ; insert version of launcher,first two digits are 
version numbers, last digit is packet revision

!define EXE "OfficeTabCenter(Admin).exe"      ; insert program exe name, e.g. 
"testapp.exe"

!define REGKEYS "Office Tab.reg"

!define SETTINGSFILESUSERS 

"$WINDIR\system32\ArmAccess.dll||$WINDIR\system32\Officetab_Detong.ocx||$WINDIR\system32\OfficeTabFunction.dll||$WINDIR\system32

\OTB_Loader.dll"

7. Mở thư mục Office Tab Portable\App\Office Tab -> Tô đen Copy tên đường dẫn 
thư mục Office Tab Portable\App ở thanh địa chỉ (Address 

Bar) -> Mở file

Office Tab.reg bằng Notepad++ Portable (click phải chọn Edit with Notepad++) -> 
Nhấn Ctrl H để hiện cửa sổ Replace -> Điền ở ô Find what là 

C:\\Program

Files\\Detong\\Office Tab -> Paste phần Tên đường dẫn thư mục Office Tab 
Portable\App\Office Tab

vừa Copy vào và thêm dấu \ để trở thành Tên đường dẫn thư mục Office Tab 
Portable (có thêm dấu \ )\\App\\Office Tab ở ô Replace with -> 

Replace All ->

OK -> Close và Save file Office Tab.reg lại.

8. Tính năng mở theo thẻ Tab của Office Tab trong Office sẽ xuất hiện khi có 
key của phần mềm tồn tại trong Registry, file của phần mềm tồn tại 

trong C:\Windows\System32

(nói cách khác là tính năng mở theo thẻ Tab phải tồn tại đồng thời với key, 
file của Office Tab trong máy). Tuy nhiên những Portable tạo theo 

Portableapps.com

Format có đặc điểm là xóa sạch key, file của Portable sau khi exit (tham khảo 
những Portable của trang Portableapps.com) nên nếu muốn vẫn còn 

tính năng

mở theo thẻ Tab sau khi exit Portable (bước 8 này là tùy ý thích) thì bạn hãy 

8.1. Vào thư mục Office Tab Portable -> Tạo thư mục Backup -> Mở cửa sổ TU -> 
Vào thư mục C:\Windows\system32 -> Click chọn tập tin đầu là 

ArmAccess.dll-> Nhấn Shift click chọn vào tập tin cuối là OTB_Loader.dll để 
chọn 4 tập tin -> Click phải chọn Copy -> Paste vào thư mục 

Backup.8.2. Vào thư mục Office Tab Portable -> Click phải -> New -> Text 
Document -> Đổi tên thành Set.bat -> Click phải vào Set.bat -> Edit -> 

Paste vào nội

dung sau

@echo off

reg import "%cd%\Data\Office Tab.reg"

copy "%cd%\Backup\ArmAccess.dll" "C:\Windows\system32"

copy "%cd%\Backup\Officetab_Detong.ocx" "C:\Windows\system32"

copy "%cd%\Backup\OfficeTabFunction.dll" "C:\Windows\system32"

copy "%cd%\Backup\OTB_Loader.dll" "C:\Windows\system32"

exit8.3. Close và Save Set.bat lại -> Mở file Set.bat (Enter hoặc Double 
click), file này sẽ có chức năng nhập key trong file Office Tab.reg vào 

Registry và

copy 4 file trong thư mục Backup vào thư mục C:\Windows\system32.

9. Sử dụng IcoFX Portable để tạo icon (biểu tượng) cho Portable

9.1. Vào File -> Open... -> Mục Files of type chọn Windows Binary 
(*.exe;*.dll;*ocx;*.icl) -> Mục File name chọn file thực thi TreeSizeFree.exe 
để 

lấy

icon của file này -> Click Open -> Click Extract. 

9.2. Click vào biểu tượng Start của Windows trong chương trình IcoFX Portable

(Create Windows Icon From Image) -> Tích chọn toàn bộ -> Click OK -> Vào File 
-> 

Save -> Lưu lại với tên Office Tab Portable trong thư mục Office Tab Portable 
Source.

10. Cuối cùng là mở file Office Tab Portable.nsi bằng NSIS Portable. Chạy file 

NSISPortable\NSISPortable.exe. Trong cột Compiler click vào tùy chọn Compile 
NSI scripts rồi kéo thả file Office Tab Portable.nsi vào cửa sổ 

hiện ra, nếu

mọi chuyện tốt đẹp thì bạn sẽ thấy của số như hình, nếu không thì chương trình 
sẽ báo lỗi và thông báo lỗi chỗ nào và bạn có thể chỉnh sửa cho 

đúng. File

thực thi 

Office Tab Portable.exe sẽ được tạo ra và lưu ở thư mục Office Tab Portable.

Khi kiên trì đến bước này là bạn có thể tận hưởng thành quả của mình rồi đấy!đá 
lông nheo

Nếu các bạn muốn đơn giản hơn nữa, có thể dùng phần mềm tạo Portable "thật" có 
tên gọi là 

Portable App Creator (xem video hướng dẫn trong Youtube 
http://www.youtube.com/watch?v=sYdi9XsrXwY hoặc 

http://www.youtube.com/watch?v=itqzdCJKWUc). 

Lưu ý: Phần mềm này có thể tạo ra file, key rác trong máy như Winrar nên cũng 
không lý tưởng để tạo Portable "thật" lắm!

Mình đã xem và viết lại hướng dẫn từ các Video trên:

1. Tải Portable App Creator tại link Rapid (0.63MB) (nước ngoài thích upload 
lên host này) https://rapidshare.com/files/2673249...nglish.paf.exe và 

AutoIt

(file nén 7-zip) 

http://www.autoitscript.com/files/au...oit-v3-sfx.exe

2. Chạy file PortableAppCreator_0__99_beta_English.paf.exe để chọn nơi bung nén 
(việc làm này không tạo file, key rác) ra thư mục 

PortableAppCreator

3. Giải nén (Extract) autoit-v3-sfx.exe ra thư mục install. Trong thư mục này, 
bạn copy file AutoIt3.exe paste vào thư mục 

PortableAppCreator\App

4. Mở (enter hoặc double click) file Portable App Creator.exe

4.1. Trong thư mục PortableAppCreator, xuất hiện thông báo "Searching for 
the..." -> Click Done

4.2. Xuất hiện thông báo Portable device located at drive -> Chọn tên ổ đĩa 
muốn lưu Portable -> Click Next -> Click Browse -> Chọn tên file Setup 

của

chương trình cần tạo Portable -> Click Open -> Click Next

5. Ở bước đầu tiên là tùy chọn Take 1st Shot -> Click Next

6. Ở bước thứ hai là tùy chọn Install/Application -> Click Next -> Xuất hiện 
thông báo 

Please install the application to your PortableApps Drive -> Click OK -> Chỉnh 
các tùy chọn khi cài đặt phần mềm như bình thường (như chọn 

Destination Folder,...)

-> Click Done

7. Ở bước thứ ba là tùy chọn Get Shortcut Info (lấy thông tin Shortcut như 
Icon) -> Click Next -> Xuất hiện 2 tùy chọn 

7.1. Ở tùy chọn Type the location of the application to run -> Click Browse -> 
Chọn tên file thực thi ".exe" của chương trình đã cài đặt -> Click 

Open

7.2. Ở tùy chọn Type a name for the PortableApp and choose an icon -> Đặt tên 
Portable theo ý muốn bản thân -> Click Icon -> Chọn lại tên file 

thực thi

".exe" ở trên hoặc file ".ico" đã tạo ra trước đó bằng phần mềm IcoFX Portable 
-> Click Open -> Click Next

8. Ở bước thứ tư là tùy chọn Open/Close -> Click Next -> Xuất hiện bảng thông 
báo 

Please make all modifications... (hãy chỉnh sửa phần mềm theo ý muốn bản thân) 
-> Close phần mềm để tiếp tục -> Click OK

9. Quan sát ở góc phải của Taskbar nếu thấy xuất hiện biểu tượng của chương 
trình vừa cài đặt thì click phải chọn Exit để thoát (mục đích không 

cho chương

trình chạy và công đoạn tạo Portable dưới đây mới có thể tiếp tục được)

10. Ở bước thứ năm là tùy chọn Take 2nd Shot -> Click Next11. Ở bước thứ sáu là 
tùy chọn Process Shots -> Click Next -> Click Next lần nữa -> 

Xuất hiện bảng thông báo Creating the folder... -> Click Done và tận

hưởng thành quả! ================================================== ======

Mời các bạn đóng góp thêm nhiều kinh nghiệm sử dụng cũng như phần mềm tạo 
Portable khác nữa!ôm một cái

Chúc các bạn vui vẻ, mạnh khỏe và thành công trong cuộc sống!

Lưu ý: Đây là những hướng dẫn dựa trên những bài viết ở trang 
Portableappsviet.com của tác giả NGOCHUY1991


Nguồn: http://www.vn-zoom.com/f229/lam-portable-voi-nsis-1391382.html

Chào các bạn, để các bạn có cái nhìn tổng quan về Portable, hôm nay mình xin 
trình bày một số thông tin sau

A. Những điều cần biết về Portable
1. Khái niệm Portable

Một Portable sẽ có khái niệm (không có định nghĩa) được phản ánh qua những đặc 
điểm cơ bản sau:

1.1. Đã được đóng gói sẵn vào một thư mục hoặc một file thực thi .exe duy nhất.

1.2. Tự chạy khi kích hoạt file thực thi .exe mà không cần phải cài đặt và đăng 
ký.

1.3. Có thể chạy tốt với đầy đủ chức năng trên ổ cứng, USB, mọi hệ điều hành, 
mọi tài khoản người dùng máy tính.

Với Portable dạng nâng cao sẽ có thêm những chức năng

1.4. Lưu lại những thiết lập ở lần sử dụng trước để sử dụng tiếp vào lần sau. 

1.5. Không để lại dấu vết (xóa sạch file "rác" trong phân vùng cài Win, key 
"rác" trong Registry) sau khi exit Portable nên không gây nặng máy.

1.6. Có thể update cho Portable.

Vì vậy, để hiểu rõ hơn về Portable dạng nâng cao các bạn hãy thử và cho ý kiến 
về những Portable của trang Portableapps.com (những Portable 

này được tạo

bởi phần mềm NSIS Portable hoặc Portableapps.com Launcher). Các bạn có thể tham 
khảo chi tiết cách sử dụng ở trang 

http://portableapps.com/support/portable_app.

Bên cạnh, mình cũng xin trích nhận xét của ChinhKhoi

#8

Trích ChinhKhoi View Post

1 phần mềm làm ra thấy chạy đc chưa hẳn đã đc gọi là Portable. Portable đúng 
nghĩa như cái tên của nó thì phải mang đi đc cả những settings mà 

ta đã thiết

lập cho p.mềm ngoài ra không để lại File rác trong máy sau khi chạy và nhiều 
cái khác nữa...v.v

2. Ưu thế của Portable so với phần mềm cài đặt là

2.1. Giúp bạn tiết kiệm được rất nhiều thời gian: Khi bạn có 1 công việc cần 
giải quyết gấp liên quan đến phần mềm ít khi được sử dụng (tức là 

chưa được

cài đặt) thì Portable là 1 sự lựa chọn đáng giá vì bạn sẽ không phải trải qua 
các thao tác thiết lập khi cài đặt hay chờ đợi quá trình cài đặt (nếu 

phần

mềm có dung lượng lớn). Hoặc giả sử bạn là chuyên gia quậy phá máy tính, máy 
tính của bạn đã nhiều lần “khôi phục cài đặt gốc”. Mỗi lần như 

thế, bạn phải

mắc công cài lại Windows và cài nhiều phần mềm cần thiết khác. Quá trình như 
vậy thường mất khoảng 2 tiếng. Nhưng nếu bạn đã có sẵn một 

“bộ sưu tập” phần

mềm Portable trên CD hay trên một phân vùng ổ cứng khác, quá trình cài đặt sẽ 
được rút gọn. 

2.2. Giúp bạn tiết kiệm dung lượng ổ cứng: trong trường hợp bạn đang sử dụng 
phần mềm cài đặt. Khi máy tính hay phần mềm đó gặp trục trặc, 

lỗi (hoặc phần

mềm bị khóa do liên quan đến bản quyền) thì bạn sẽ cài lại phần mềm đó với file 
cài đặt. Như vậy trong máy tính của bạn sẽ có 2 bản của 1 phần 

mềm (bản

đang chạy trên máy và file cài đặt) tức là trên máy tốn 2 lần dung lượng của 1 
phần mềm còn khi sử dụng Portable thì chỉ tốn dung lượng của 

chính bản Portable

đó mà thôi.

3. Tình hình phổ biến Portable

Hiện tại, chỉ có một số ít phần mềm Portable được các hãng phần mềm làm ra theo 
nhu cầu của người sử dụng. Những phần mềm Portable còn lại 

thì do người

tiêu dùng tự làm hoặc dựa trên một số phần mềm khác để làm ra. Còn các hãng 
phần mềm lớn không chủ trương biến sản phẩm đang có của họ 

thành Portable vì

chỉ cần sao chép ra nhiều bản khác nhau là có thể sử dụng cho rất nhiều PC mà 
không cần phải trả phí bản quyền, người tiêu dùng sẽ chuyển 

qua sử dụng dạng

Portable và họ sẽ tất thu lớn. Do không liên quan đến bản quyền nên rất nhiều 
phần mềm Portable là phần mềm mã nguồn mở.

4. Các loại PortableĐể các bạn dễ hình dung, theo ý kiến chủ quan, mình chia 
portable làm 2 loại

dựa trên tác động vào Registry của Windows

4.1. Portable "ảo" làphần mềm được đóng gói chạy trong môi trường ảo (môi 
trường này có registry của riêng nó để key của phần mềm add vào) 

tạo bởi VMwareThinapp, 

Xenocode Virtual Appliance Studio, Evalaze,...

4.2. Portable "thật" là phần mềm tuy được đóng gói nhưng lại tác động thật lên 
Registry của Windows như phần mềm cài đặt tạo bởi Multi 

Packer, Winrar,Universal Extractor, NSIS-Total Uninstall, PortableApps.com 
Launcher, Portable App Creator, Apps Creation Master, các soft 

theo dõi (monitor) thay đổi

registry khi cài đặt phần mềm (Total Uninstall (TU), FindChangeTool, 
WhatChanged, RegFromApp, 

RegShot, Disk and Registry Alert, MJ Registry Watcher,..), các soft chuyển phần 
mềm cài đặt từ chỗ này sang chỗ khác cũng "có thể" tạo được 

Portable (Ez File Transplanter, Steam Mover, Application Mover,...). Kể ra cũng 
hơi nhiều.

5. Đặc điểm phần mềm tạo Portable

Để các bạn dễ lựa chọn phần mềm tạo Portable phù hợp với bản thân, mình đã sử 
dụng, tham khảo, so sánh và nhận thấy

5.1. Ưu thế của Portable "thật" so với Portable "ảo" là có thể dùng 

5.1.1. Kết hợp các phần mềm lại với nhau như Firefox với IDM,...

5.1.2. Kết hợp phần mềm với hệ thống như OfficeTab với Word...

5.2. Nếu muốn tạo Portable không cần kết hợp với phần mềm hay với hệ thống tức 
là Portable "ảo", các bạn nên sử dụng VMware Thinapp để tạo 

vì quá trình

tạo Portable sẽ đơn giản và quá trình sử dụng Portable sẽ không tạo ra file, 
key rác "lộn xộn" trong máy.

5.3. Trong các phần mềm tạo Portable "thật", mình đã tìm hiểu và thấy những 
nhận xét sau:

5.3.1. Multi Packer

#2

Trích ChinhKhoi View Post

thật sự thì nó chỉ đơn thuần là một Trình đóng gói File (như đúng cái tên của 
nó Multi Packer) và chức năng còn kém xa WinRar nhưng lại đc các 

bác brồ IT

thổi phồng lên là nó làm đc Portable

Nhưng cũng phải nói là nó cũng làm đc Portable đối với 1 vài soft đơn giản chỉ 
cần thư mục trong ProgramFiles (vd như CCleaner), còn đối với 

những softmà cần những File trong system32, đăng kí Registry hoặc những cái 
khác nữa .v.v. thì cái này có mà khóc thét !hi hi

#14

Trích Tùng - Hacker View Post

Đây chỉ là phần mềm để đóng gói file lại (Giống winrar) để chạy, làm các 
portable đơn giản thì được chứ lớn và phức tạp, cần file hệ thống thì 

chịu.

5.3.2. Winrar

#13

Trích ChinhKhoi View Post

Nếu máy dùng các Portable đc làm bằng cách này thì chẳng mấy chốc sẽ thành bãi 
rác!

cười nhăn răng

Như bạn biết đấy, 1 phần mềm khi cài vào máy và chạy sẽ sinh ra một số File 
dùng để lưu các thiết lập của nó.Các thiết lập này thường là các key 

đc lưu

trong registry hoặc các File trong Application Data..v.v.

Nhưng các bộ cài thì còn có các trình Uninstall đi kèm để khi ko dùng nữa thì 
sẽ gỡ sạch các File và các key đó ra khỏi máy tính

Còn Portable làm bằng Winrar theo như bác chủ thớt hướng dẫn thì ko hề có chức 
năng xóa các File này sau khi chạy, mà chỉ đơn giản là dùng 

Winrar nén cái

thư mục của chương trình trong Program Files lại mà thôi, hệ quả là sau khi 
Portable chạy xong thì các thiết lập của chương trình trong registry 

hay trong

thư mục Application Data vẫn còn ngay cả khi bạn xóa cái Portable ấy đi chăng 
nữa. 

Như vậy mỗi Portable(làm theo kiểu này) của 1 chương trình sau khi chạy lại để 
lại 1đống các File và các key trog Registry thì lâu dần máy tính 

của bạn

sẽ thành cái gì thì ko nói cũng biết.

5.3.3. Universal Extractor

#36

Trích hiepcun View Post

_Phần mềm này cũng tương tự Winrar thôi,nhưng khác ở chỗ là nó extract các file 
có đuôi là .exe,.msi..và một số đuôi khác nữa!nhưng cái này có 

rất nhiều

hạn chế như ko phải file exe nào cũng extract được,hay những file khi extract 
ra ko hề giống những file trong thư mục C:\Program Files ->ko thể 

chạy được!

_cái Universal extractor này chỉ giúp các bác ko phải cài ứng dụng vào máy mà 
vẫn lấy được thư mục của ứng dụng trong C:\Program Files và vài 

thư mục khác

mà thôi

_còn chuyện cái này làm được Portable vì 1 lí do rất đơn giản là bản thân những 
ứng dụng mà nó extract đã có thể tự chạy đc rồi,tức là những 

ứngdụng đó

có thể chạy mà ko cần đến các file ở các thư mục khác(ngoài Program Files),các 
khóa trong Registry hay các Service..có thể kể ra 1 vài VD đơn 

giảnnhư:

Unikey,IDM,CCleaner..vv.Với những ứng dụng đơn giản như vậy thì các bác chỉ 
việc copy cái thư mục của ứng dụng đó trong C:\Program Files 

là chạy được rồi!

6. Khái niệm về các thành phần khác liên quan đến Portable

Thamkhảo

1. Hỏivề compiler và interpreter?

2. khác biệt giữa trình biên dịch (compiler) và trình thông dịch (interpreter)

6.1. Code - Mã nguồn: khi ta ra lệnh hay nhờ một người A làm việc gì đó, ta sẽ 
truyền đạt thông tin bằng ngôn ngữ để A có thể hiểu được. Tương 

tự như vậy,

khi tara lệnh cho máy tính thực hiện công việc gì, ta cũng phải dùng ngôn ngữ 
để máy có thể hiểu. Tuy nhiên ngôn ngữ thông thường mà con 

người dùng trong

cuộc sống khác xa ngôn ngữ mà máy hiểu. Ngược lại, việc dùng trực tiếp ngôn ngữ 
của máy để viết một loạt lệnh cho máy thực hiện thì lại vô 

cùng vất vả.

Vì vậy người ta đã tạo ra những ngôn ngữ lập trình cao có cú pháp và thành phần 
gần như ngôn ngữ thông thường nên dễ hiểu, dễ viết rất nhiều 

(đối với người

đã học về lập trình). Từ đó ta cần một chương trình để dịch một đoạn mã (mà ta 
gọi là Code) từ ngôn ngữ lập trình cao (ngôn ngữ nguồn) sang 

ngôn ngữ mà

máyhiểu và file chứa Code được gọi là file nguồn (ở đây Code được viết trong 
file nguồn là Template.nsi). Việc dịch này có thể làm theo chủ yếu 

bằng hai

cách:6.2. Compiler - Trình biên dịch: là chương trình dịch toàn bộ Code trong 
file nguồn để tạo thành file thực thi .exe có thể được đem đi sử dụng 

độc lập

và không còn phụ thuộc vào Compiler nữa (ở đây Compiler là NSIS Portable).

6.3. Interpreter - Trình thông dịch: là chương trình vừa dịch từng Code trong 
file nguồn vừa chạy/thực thi từng lệnh nên mỗi lần cần chạy lại lệnh 

thì

phải dùng lại 

Interpreter. Ví dụ, mỗi lần thực thi lệnh trong file .bat thì phải dùng lại DOS 
tích hợp trong Windows.

6.4. Launcher (tạm gọi là trình phóng): đây là thành phần đặc trưng của 
Portable theo PortableApps.com Format™ 3.0 (2012-04-18) được gọi là file 

quản lý

${PNAME}.exe có chức năng điều khiển toàn bộ hoạt động của Portable. Ví dụ như 

TreeSize Free Portable.exe

7. Các bạn có thể tham khảo thêm trong Google hoặc muốn đơn giản, trực quan 
sinh động hơn nữa là trong Youtube với các từ khóa tiếng Việt 

lẫn tiếng Anh:

tạo portable (creat portable), làm portable (make portable), portable hóa 
(portabilize). Gợi ý: để tăng kết quả khi tìm trong Google thì có thể thay 

thế

những từ khóa đồng nghĩa với nhau như: 

Application (ứng dụng) có thể viêt là App, Program (chương trình), Software 
(phần mềm). Make (làm) có thể là Create (tạo), Portabilize (di động 

hóa) nênMaker viết thành Creator, Portabilizer. Portable có thể là Pocket 
(túi), Standalone (độc lập)...Mình tìm được một số link tham khảo

7.1. How To Make Portable Applications

7.2. Free Portable Apps Creator 0.972 beta tutorial

7.3. Create portable application Using Portable Application creation master

7.4. How To Create Your Own Portable Program (trong 

http://pocketprograms.blogspot.com/)

7.5. How to make Portable with NSIS

8. Một số trang cung cấp phần mềm portable

8.1. http://portableapps.com/apps

8.2. http://portableappz.blogspot.com/

8.3. http://punsh.at.ua/ (dịch sang tiếng Anh)

8.4. http://www.thinstallsoft.com/

8.5. http://portable-apps.net/

8.6. http://www.pendriveapps.com/

8.7. http://www.portablefreeware.com/

8.8. http://baltagy.blogspot.com/

8.9. http://portableturk.com/apps/portable-apps/

9. Nếu có thắc mắc gì về các bước tạo Portable với NSIS, các bạn có thể tham 
khảo thêm trang thuần Việt http://portableappsviet.com/ do bạn 

NGOCHUY1991

đam mê Portableapps, nghiên cứu kỹ trong vòng hơn 6 tháng và với mục đích chia 
sẻ, trao đổi kinh nghiệm với mọi người nên đã trình bày hướng 

dẫn rất chi tiết thành nhiều bài ở trang này. 

B. Nguyên lý hoạt động của phần mềm Portable
Tham khảo

1. Test PortableApps

2. Theo dõi truy xuất hệ thống file và registry của một ứng dụng bất kỳ với 
ProcessMonitor

3. Real-time monitor với ProcessHacker

4. SysTracer Portable v2.6 – Track file and registry changes in your computer

Việc tạo Portable là lập trình lại phần mềm nên việc tìm hiểu nguyên lý hoạt 
động của Portable (còn gọi là test Portable) cũng không kém phần 

quan trọngtrong việc không chỉ đảm bảo sự hoạt động ổn định của mọi bản 
Portable mà còn có ích trong việc sử dụng bất cứ ngôn ngữ lập trình 

khác ngoài NSIS để tạo

Portable (ví dụ như tạo Portable với file .bat, .cmd chứa những lệnh của DOS). 
Một số phần mềm có thể giúp bạn theo dõi quá trình này là 

Process Monitor,

Process Hacker, Systracer. 

Với Systracer, bạn tạo bản snapshot thứ 1 trước khi run portableapps. Trong khi 
run và trước khi exit portableapps, hãy tạo bản snapshot thứ 2. 

Đến đây

bạn cứ sử dụng portableapps như bình thường. Cuối cùng, sau khi exit khoảng 
10s, tạo bản snapshot thứ 3, kết thúc công đoạn tạo snapshot. 

Vậy với 3 bảnsnapshot trên, công việc test portableapps đã sẵn sàng. Rất đơn 
giản, bạn chỉ việc Compare bản snapshot thứ 1 và thứ 3. Còn 

muốn xem những thay đổi trong

hệ thống trong khi ứng dụng đang hoạt động nhằm mục đích nghiên cứu, chỉ việc 
Compare snapshot thứ 1 và thứ 2.

1. Với Portable dạng nâng cao

1.1. Chuẩn bị môi trường máy tính trước khi chạy Portable

1.1.1. Run Launcher.

1.1.2. Backup file, folder hệ thống.

1.1.3. Restore/Copy file, folder của Portable vào hệ thống.

1.1.4. Backup registry hệ thống thành file .reg chứa key hệ thống.

1.1.5. Restore/Import file .reg chứa key Portable vào Registry.

1.2. Môi trường máy tính trong khi chạy và trước khi exit Portable

1.2.1. Run App.

1.2.2. Exit App.

1.3. Khôi phục lại môi trường máy tính như ban đầu sau khi exit Portable

1.3.1. Backup file, folder của Portable.

1.3.2. Delete file, folder của Portable

1.3.3. Restore file, folder hệ thống.

1.3.4. Backup key Portable trong Registry thành file .reg chứa key Portable.

1.3.5. Delete key Portable trong Registry.

1.3.6. Restore file .reg chứa key hệ thống vào Registry.

1.3.7. Exit Launcher.

2. Với phần mềm cài đặt hay Portable đơn giản chỉ có các bước sau (nên sẽ để 
lại key, file rác trong máy)

2.1. Restore/Copy file, folder của phần mềm/Portable vào hệ thống.

2.2. Restore/Import file .reg chứa key phần mềm/Portable vào Registry. 

C. Các đặc điểm của phần mềm cài đặt
Việc kiếm cho bản thân 1 chương trình Portable trên mạng là không khó nhưng để 
tự làm ra 1 phần mềm portable thì không phải ai cũng làm được. 

Đặc biệt

việc tạo ra 1 phần mềm Portable có những đặc điểm của dạng Portable nâng cao 
như khái niệm cũng như không bị ảo hóa như Portable "ảo" lại 

càng đòi hỏi

sự tỉ mỉ, phức tạp hơn trong cách làm. Bởi các bạn sẽ phải căn cứ vào các đặc 
điểm đặc trưng, riêng biệt của mỗi phần mềm để làm thành bản 

Portable như

ý muốn bao gồm những đặc điểm sau (Các dòng đánh dấu * là các trường hợp khó 
tạo Portable):

1. Đặc điểm bản quyền

1.1. Miễn phí mã nguồn mở: được phép tự do sử dụng, chia sẻ phần mềm.

1.2. Có phí mã nguồn đóng: phải có Key, Name đăng ký (Serial key, keygen – key 
maker) hoặc Crack, Patch để có thể sử dụng được phần mềm.*

2. Đặc điểm file thực thi “.exe”

2.1. Một file “.exe”: phần mềm chỉ có 1 file thực thi .exe của chính nó (dạng 
phổ biến).

2.2. Nhiều file “.exe”: phần mềm có nhiều file thực thi .exe của chính nó. Vd: 
Microsoft Office, Nero (ghi đĩa),…*

2.2.1. Những file .exe không liên quan đến nhau: phần mềm không có chức năng mở 
file B.exe thông qua file A.exe.

2.2.2. Những file .exe có liên quan đến nhau: phần mềm có chức năng mở file 
B.exe thông qua file A.exe. Ví dụ với phần mềm ghi đĩa Nero, nếu mở 

file 

NeroStartSmart.exe (trong thư mục C:\Program Files\Nero\Nero8\Nero StartSmart) 
-> click vào Tab Rip and Burn -> chọn tiếp tùy chọn trong đó 

(ví dụ BurnData Disc) -> nó sẽ mở file Nero.exe (trong thư mục C:\Program 
Files\Nero\Nero8\Nero Burning Rom).

3. Đặc điểmvề key phần mềm trong Registry khi cài đặt phần mềm

3.1. Chỉ thêm (add) key của phần mềm vào Registry của Windows (dạng phổ biến).

3.2. Thêm và sửa (modify) cả key của Windows trong Registry. Vd: phần mềm đóng 
băng, Antivirus,…*

4. Đặc điểmvề file khi cài đặt

Thêm file (.dll,..) vào những thư mục của phần mềm trong ổ C: như C:\Windows 
hoặc 

C:\Windows\system32, C:\Program Files\Common Files, C:\Documents and 
Settings\{Tên người dùng}\Application Data (WinXP) hoặc 

C:\Users\{Tên người dùng}\AppData\Roaming

(Win7),...5. Đặc điểm về file service: .sys, .exe, .dll *

Tham khảo Kích hoạt “Running” cho services portableapps bằng tay thông qua 
ProcessHacker

Service thường thuộc quyền sở hữu của những phần mềm A cần sử dụng kết hợp với 
phần mềm B khác (ví dụ Internet Download Manager cần 

sử dụng kết hợp với

trình duyệt web) có chức năng theo dõi phần mềm B. Đến khi phát hiện tình huống 
cần đến chức năng của phần mềm A thì nó sẽ gọi file thực thi 

chính củaphần mềm A hoạt động. Ví dụ: Service của Internet Download Manager có 
chức năng theo dõi trình duyệt web (mà nó hỗ trợ) để sẵn 

sàng bắt link, hỗ trợ tăng

tốc download khi cần thiết. Nếu nó không hoạt động thì khả năng phát hiện link 
và hỗ trợ tăng tốc download là không còn.

6. Những thiết lập khi sử dụng phần mềm

Được lưu trong Registry và những thư mục của phần mềm trong ổ C:. 

D. Tiếp theo là hướng dẫn

Tham khảo:

1. Hướng dẫn sử dụng ApplicationPortableTemplate.nsi

2. Nguyênlý hoạt động của PortableApps phát triển từ 
ApplicationPortableTemplate.nsi Format

3. Phòng thử nghiệm VirtualBox – Nơi thực tập cho dân vọc máy tính

Các bạn cần chuẩn bị những phần mềm cấn thiết sau:

1. Total Uninstall Portable (TU): dùng để quét toàn bộ hệ thống trước khi cài 
đặt và tìm ra những thay đổi sau khi cài đặt. Download link MF 

mediafire.com/?72rr29kd0f1574y, TurboBit.net, LetItBit.net, DepositFiles.com.

1.1. Sau khi tải về, ngắt kết nối Internet (Open Network and Sharing Center -> 
Change adapter settings -> Right click vào biểu tượng màn hình 

xanh -> Disable).

1.2. Giải nén Total_Uninstall.exe -> Mở thư mục Total Uninstall -> Mở tập tin 

TotalUninstall5Portable.exe -> Vào Инструменты (Tools) -> Настройки...

(Options...) -> Chọn ngôn ngữ là English -> OK.

1.3. Vào Help -> Register... -> Đăng ký với name, key có trong tập tin 
SERIAL.txt.

1.4. Vào Tools -> Options... -> Web updates -> Chọn Check update method là 

Manual (vì bản Portable này tạo từ bản đã crack nên có thể đổi tùy chọn update 
method tùy ý, còn nếu là bản thường thì tùy chọn update 

method là Automatic

ở dạng "chìm" và không thể thay đổi) -> OK.

1.5. Mở lại kết nối Internet (Open Network and Sharing Center -> Change adapter 
settings -> Right click vào biểu tượng màn hình đen -> Enable) 

->Sử dụng

thoải mái!

Lưu ý: để gỡ sạch 1 phần mềm A có 2 trường hợp

TH1: phần mềm A đã cài đặt trên máy trước khi sử dụng TU

Dùng công cụ xóa bất kỳ gỡ phần mềm A -> Sau khi gỡ lần 1 phần mềm A, monitor 
quá trình cài đặt của phần mềm A bằng TU: Vào menu File -> 

Install new...

-> Next -> Chọn file cài đặt của phần mềm A trong mục Setup program path -> 
Launch setup program -> Program is installed -> Complete the 

monitoring processlater -> Gỡ bỏ lần 2 phần mềm A bằng TU. 

TH2: phần mềm A dự định sử dụng nhưng vẫn chưa cài đặt trên máy: tương tự 
trường hợp 1 từ bước monitor.

Nếu muốn đơn giảnhơn các bạn có thể sử dụng phần mềm đóng băng Shadow Defender

(ACKCR-YUAWF-8RWPW-NV3UI-11ISP) để máy tính trở về trạng thái trước khi cài 
đặt: đóng băng máy tính -> cài đặt phần mềm -> tạo Portable 

-> gỡ đóngbăng

máy tính2. IcoFX Portable: trích 1 Icon bất kì để làm Icon cho file thực thi. 
Hướng dẫn sử dụng

3. Notepad++ Portable: dùng để edit code cho các phần mềm lập trình (ví dụ như 
NSIS). Phần mềm này hỗ trợ edit rất nhiều định dạng file (".nsi", 

".ini",

".nsh",...), tính năng Highlighting có chức năng đánh màu cho các câu lệnh theo 
từng nhóm khác nhau, giao diện thân thiện, dễ sử dụng, hỗ trợ 

mở nhiều

file cùng lúc, tìm kiếm dễ dàng hơn nhờ đánh số thứ tự cho mỗi hàng, rút gọn 
các lệnh như cây thư mục Explorer của Windows…tất cả xem như 

quá hoàn hảo,

xứng đáng thay thế Notepad cổ điển của Window. Hướng dẫn sử dụng: phần 1, phần 2

4. NSIS Portable: sau khi edit code NSIS trong tập tin Template.nsi cho ứng 
dụng cần làm portable (được viết bằng ngôn ngữ lập trình NSIS), ta 

sẽ biên

dịch nó bằng NSIS Portable để tạo ra file .exe. 

5. Template.nsi: là tập tin chứa tập lệnh (các lệnh) đặc trưng được viết theo 
ngôn ngữ lập trình của NSIS và có đuôi là ".nsi". Tập tin Template.nsi 

có

nhiệm vụ chứa những thiết lập cần thiết để NSIS biên dịch và tạo ra file thực 
thi ".exe" thực hiện các chức năng của Portable. Các bạn tra từ điển Anh-Việt 
sẽ thấy từ "Template" có nghĩa là "mẫu". Ở đây Application Portable 
Template.nsi (phiên bản 2.7.3) là một template được xây dựng dựa trên 
PortableApps.com

Format 1.0 nên nói rằng ApplicationPortableTemplate.nsi thuộc PortableApps.Com 
Format thì cũng đúng. Tuy nhiên hiện tại thì PortableApps.Com Format đã cho ra 
phiên bản mới PortableApps.com Format™ 3.0 (2012-04-18) và nó đã thay đổi rất 
nhiều. Bởi nó được xây dựng bằng PortableApps.com Launcher, 

một ứng dụng mã nguồn mở do

Chris Morgan – một thành viên “già làng” của PortableApps.Com phát triển nên 
tác giả 

NGOCHUY1991 đã quyết định chỉnh sửa lại ApplicationPortableTemplate.nsi (hỗ trợ 
cho PortableApps.com Format™ 1.0) thành 

Application Portable Template (Fixed By PAV).nsi (nằm trong đường dẫn 
Application Portable Template (Fixed By PAV)\Other\${APP} Portable 

Source). Sau khi

tải về bạn mở file Application Portable Template (Fixed By PAV).nsi bằng 
Notepad++ Portable và quan sát ở dòng thứ 4

Requiredplugins: NewAdvSplash, Registry, FindProc, Dialogs

Đây chính là những plugin mà file Application Portable Template (Fixed By 
PAV).nsi

đòi hỏi NSIS Portable phải có đủ (ở đây là 4 plugin). Vì vậy bạn vào đường dẫn 

NSISPortable\App\NSIS\Plugins kiểm tra xem có đủ những plugin này chưa (một 
nguyên tắc là bạn khai báo plugin nào trong code thì plugin đó 

phải tồn tại

trong folder này, danh sách plugins trong folder này chưa thể cập nhập hết, vì 
đơn giản plugins có rất nhiều, chúng có thể được tạo ra bởi bất kỳ 

ai cókiến thức về code NSIS), nếu chưa thì vào trang Category Plugins -> 
Download plugin còn thiếu về (ở bản NSIS Portable này thì plugin còn 

thiếulà Dialogs.dll)

-> Giải nén file .zip -> Vào folder sau khi giải nén -> Tìm đến file có đuôi 
.dll (đây là đuôi của Plugin trong NSIS) -> Bỏ vào folder 

NSISPortable\App\NSIS\Plugins. Tham khảo thêm bài Compile code NSIS với NSIS 
Portable.

6. Phần mềm được tạo Portable

6.1. TreeSize Free thông thường người dùng máy tính rất mất thời gian trong 
việc quan sát nhằm mục đích quản lý để lập ra cây folder. Windows 

đã cung cấp

trình Explorer mặc định nhưng nó có nhược điểm chỉ show cây folder tại cửa sổ 
bên tay trái, còn nội dung của các folder đó thì phải quan sát bên 

cửa sổtay phải. Vì vậy, TreeSize Free không chỉ giúp bạn show các folder con mà 
còn show hết các file (bao gồm tên file, loại file, kích cỡ…) bên 

trong các folder

đó.

6.2. Office Tab Từ lâu, phương thức duyệt nhiều cửa sổ trang web theo thẻ Tab 
đã được sử dụng rộng rãi trong hầu hết trình duyệt (như Firefox). 

Nếu muốn

áp dụng cách duyệt file theo thẻ Tab trong Microsoft Word, Excel, PowerPoint, 
bạn có thể nhờ sự trợ giúp của tiện ích OfficeTab. Điểm độc đáo 

của OfficeTab

so với các phần mềm cùng chức năng: cho phép bạn tùy chọn kiểu dáng và vị trí 
của thanh chứa thẻ theo nhu cầu (phía trên, phía dưới, bên trái, 

hoặc bên

trái giao diện Word, Excel, PowerPoint). (Nguồn download 

Office Tab 7.0 Full crack (Duyệt tài liệu theo thẻ) đã hỗ trợ Powerpoint2010 và 
các ứng dụng khác download link 

mediafire.com/?wrc2fc5fbztmjbo) 

E. Vài nét về file Application Portable Template 
(Fixed By PAV).nsi Và cách thiết lập với những file, folder của PortableTham 
khảo

1. Sửa lỗi cơ bản trong Application Portable Template.nsi

2. Biến và Hằng trong code NSIS3. Hướng dẫn sử dụng 
ApplicationPortableTemplate.nsi

Khi mở bằng Notepad++ Portable1. Các thành phần và màu sắc

Để hiểu rõ hơn về các thành phầntrong file Application Portable Template (Fixed 
By PAV).nsi, các bạn có thể tham khảo thêm ở file help NSIS 

Portable\App\NSIS\NSIS.chmcó chứa những hướng dẫn chi tiết, đầy đủ về code NSIS.

1.1. Phần giải thích (được Notepad++ Portable gán màu xanh lá) quy định bắt đầu 
bằng dấu ; hoặc /* giúp bạn hiểu rõ hơn nội dung của những 

dòng code. Vídụ

; # Change the following constants depending on the application you want to 
make portable

1.2. Phần hằng (được Notepad++ Portable gán màu cam). Hằng trong code cũng 
tương tự như trong toán.

1.2.1. Loại 1 làhằng đã được khai báo đồng thời đã được gán sẵn 1 giá trị mặc 
định, khi cần sử dụng ngay. Ví dụ muốn dùng hằng $EXEDIR thì chỉ 

việc đặtnó vào nơi bạn muốn dùng, không cần khai báo và gán trị nào hết. Mặc 
định đường dẫn của hằng 

$EXEDIR là nơi thư mục chứa file chạy ứng dụng đó. Mỗi hằng trong danh sách 
dưới đây đã được gán 1 đường dẫn mặc định trên HĐH, để biết 

thêm chi tiết về

các đường dẫn này, các bạn có thể tham khảo thêm trong NSIS Manual

$PROGRAMFILES, $PROGRAMFILES32, $PROGRAMFILES64, $COMMONFILES, $COMMONFILES32, 
$DESKTOP, 

$EXEDIR, $EXEFILE, $EXEPATH, ${NSISDIR}, $WINDIR, $SYSDIR, $TEMP, $STARTMENU, 
$SMPROGRAMS, 

$SMSTARTUP, $QUICKLAUNCH, $DOCUMENTS, $SENDTO, $RECENT, $FAVORITES, $MUSIC, 
$PICTURES, 

$VIDEOS, $NETHOOD, $FONTS, $TEMPLATES, $APPDATA, $LOCALAPPDATA, $PRINTHOOD, 
$INTERNET_CACHE, 

$COOKIES, $HISTORY, $PROFILE, $ADMINTOOLS, $RESOURCES, $RESOURCES_LOCALIZED, 
$CDBURN_AREA, 

$PLUGINSDIR, $HWNDPARENT

1.2.1.1. ${APP} là hằng chỉ định tên ứng dụng được làm Portable ví dụ như 
TreeSize Free

!define LONGAPP       "${APP}"         ; long name of your application used for 
desriptive fields (if the exe should not contain a space, but the 

description could)1.2.1.2. ${PNAME} là hằng chỉ định tên ứng dụng Portable (lưu 
giá trị là chuỗi ${APP}

Portable) ví dụ như TreeSize Free Portable

!define SPLASHIMAGE "${PNAME}.jpg"

1.2.1.3. $APPDATA là hằng chỉ định đường dẫn mặc định đến folder chứa các cấu 
hình chính của những ứng dụng được cài đặt trực tiếp trên 

máy tính 1.2.1.3.1. Cấp Users

Với Win XP: C:\Documents and Settings\{Tên người dùng}\Application Data

Với Win 7: C:\Users\{Tên người dùng}\AppData\Roaming

!define SETTINGSFOLDERSUSERS "$APPDATA\JAM Software"

1.2.1.3.2. Cấp All Users

Với Win XP: C:\Documents and Settings\All Users

Với Win 7: C:\ProgramData

!define SETTINGSFOLDERALLSUSERS "$APPDATA\MARTAU"

1.2.1.4. $EXEDIR là hằng chỉ định đường dẫn mặc định đến folder chứa file quản 
lý .exe

của ứng dụng Portable ví dụ như TreeSize Free Portable.exe

1.2.1.5. ${APP} là hằng chỉ định đường dẫn mặc định đến folder chứa file thực 
thi gốc 

.exe của ứng dụng được làm Portable ví dụ như TreeSize Free.exe.

1.2.1.6. $WINDIR là hằng chỉ định đường dẫn mặc định đến folder C:\Windows

1.2.1.7. $SYSDIR là hằng chỉ định đường dẫn mặc định đến folder 
C:\Windows\System32

1.2.2. Loại 2 là những hằng số mà các bạn phải tự khai báo và gán giá trị cho 
nó nên thường đứng sau chữ !define. Ví dụ khi sử dụng hằng số 

${EXE},đây

là hằng loại 2 nên phải khai báo cho nó trước khi sử dụng nghĩa là gán cho hằng 
số ${EXE} giá trị rỗng, biểu thị bằng 2 dấu ngoặc kép liên tiếp. 

!define EXE ""

1.3. Phầnbiến (được Notepad++ Portable gán màu đen). Ví dụ $PROGRAMDIR. Biến 
trong code cũng tương tự như trong toán. Bạn có thể đặt tên 

cho một vấn đề

nào đó chưa biết là biến, sau đó dựa trên những thứ liên quan đến nó để lập hàm 
hay phương trình tìm lời giải. Trong code thì biến phải được khai 

báo trước

khi thực hiện bất kỳ một hàm nào, và nó tuân theo nguyên tắc “mỗi biến chỉ có 1 
ô nhớ”, nếu trước đó bạn đã gán giá trị cho biến nhưng sau này 

lại tiếp

tục gán cho biến đó 1 giá trị khác thì cuối cùng biến sẽ nhận giá trị mới bạn 
vừa gán, không có nghĩa là nó không nhận giá trị cũ, nhưng kể từ thời 

điểm

bạn gán lần nữa thì nó sẽ nhận trị mới. Điều này vô cùng hữu ích nếu ai đó 
không muốn code của họ chứa quá nhiều biến. Thay vào đó, họ sẽ 

chỉ khai báo

1 biến rồi dùng biến đó cho nhiều công đoạn khác nhau, cứ mỗi lần sử dụng biến 
xong có thể họ lại gán trị rỗng cho biến này hoặc gán 1 trị mới 

cho 1 công

đoạn mới, kiểu như reset lại mặc định của biến ấy mà. Trong NSIS, biến gồm 2 
loại.

1.3.1. Loại 1 là những biến đã được khai báo sẵn trong code NSIS, và do đó khi 
sử dụng không cần đến công đoạn khai báo nữa, chỉ cần nêu tên 

biến và sử

dụng ngay. Ví dụ nếu muốn dùng biến $INSTDIR thì đem ra dùng luôn, không khai 
báo gì hết. Danh sách các tên biến loại 1 này gồm

$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $R0, $R1, $R2, $R3, $R4, $R5, $R6, $R7, 
$R8, $R9, $INSTDIR, $OUTDIR, $CMDLINE, $LANGUAGE

1.3.2. Loại 2 là những biến bạn phải tự khai báo, nếu chưa khai báo mà sử dụng 
ngay như biến loại 1 thì NSIS báo có lỗi. Ví dụ khi muốn sử dụng 

biến $PROGRAMDIR

thì trước đó phải khai báo biến này như sau

Var PROGRAMDIR ; holds the path to the above EXE file

1.4. Phần hàm (được Notepad++ Portable gán màu đen hoặc màu xanh dương).

1.4.1. Ở dòng 400 hàm StrCpy thực hiện lệnh copy đường dẫn chứa file thực thi 
gốc 

.exe của ứng dụng đến biến số $PROGRAMDIR

StrCpy "$PROGRAMDIR" "$EXEDIR\App\${APP}"

1.4.2. Các hàm InitFilesAllUsers, InitFoldersAllUsers và CleanFoldersAllUsers, 

CleanFilesAllUsers thực chất như hàm InitFilesUsers, InitFoldersUsers hay 

CleanFoldersUsers, CleanFilesUsers nhưng được chỉnh sửa lại hằng số và thêm vào 
hàm:

SetShellVarContext all1.4.3. Hai hàm chính: ValuesToStack và RegFileToStack 
giúp nhận biết các đường dẫn được ngăn cách bởi || trong một số 

hằng như DOREG (nếu bật REGKEYS),DOFILESUSERS (nếu bật SETTINGSFILESUSERS), 
DOFOLDERSUSERS (nếu bật 

SETTINGSFOLDERSUSERS),…!ifdef DOREG | DOFILESUSERS | DOFILESALLUSERS | 
DOFOLDERSUSERS | DOFOLDERSALLUSERS | 

DOPATH2. Nguyên lý hoạt động của Portable được thể hiện trong những dòng từ 271 
đến 

286Call InitINI ; apply INI settings

Call InitVars ; set default variable values when no INI is used

Call InitInstall ; installs additional files, e.g. sources or INI-files

Call Init ; other initalizations before any registry, folder, or fileoperations 
are done

Call InitReg ; backup current reg, apply portable reg

Call InitFilesUsers ; rename current files, apply portable files

Call InitFoldersUsers ; rename current folders, apply portable folders

Call InitFilesAllUsers ; can be used for custom settings like e.g. file 
manipulations, empty by default

Call InitFoldersAllUsers ; can be used for custom settings like e.g. file 
manipulations, empty by default

Call RunApp ; run app

Call CleanFoldersAllUsers ; can be used for custom cleanup like e.g. file 
manipulations, empty by default

Call CleanFilesAllUsers ; can be used for custom cleanup like e.g. file 
manipulations, empty by default

Call CleanFoldersUsers ; copy portable folders, delete portable folders, 
restore original folders

Call CleanFilesUsers ; copy portable files, delete portable files, restore 
original files

Call CleanReg ; copy reg, restore original reg

Call Clean ; Absolute last things to do, cleanup

Tạiđây bạn sẽ thấy cách trình bày “đệ quy” tên danh sách các tiến trình chính – 
được thực thi bởi file quản lý ${APP} Portable.exe. Từ dòng 271 

đến279,

công việc chính mà file quản lý sẽ làm là chuẩn bị trước môi trường cần thiết 
cho ứng dụng hoạt động như backup,…Dòng 280, hàm RunApp sẽ 

thực hiện việc

gọifile thực thi chính của ứng dụng cần làm portable. Từ dòng 281 đến 286, file 
quản lý sẽ cập nhập mới cho files, folders cấu hình và .reg file của 

ứng

dụng, sau đó khôi phục lại môi trường như trước khi khởi chạy ứng dụng 
portable. Trình tự thực hiện của nó theo đúng thứ tự từ trên xuống dưới. 

Cụthể

từng hàm như thế nào, các bạn xem từ dòng 288 trở xuống.

3. Những phần cần bổ sung vào file Application Portable Template (Fixed By 
PAV).nsi

Cácbạn thêm vào giữa " " hoặc vào bổ sung thêm các hàm

3.1. Với hằng APP: thêm vào giữa " " tên thư mục của ứng dụng ở cấp thấp nhất 
(tên thư mục không theo tên nhà sản xuất ví dụ như JAM 

Software mà là TreeSize

Free) trong thư mục cài đặt Program Files.

!define APP ""  ; insert application name, e.g. "TestApp"; this one is used for 
the final executable an in the directory structure

3.2. Với hằng VER: thay 0.0.0.0 thành phiên bản ứng dụng Portable bằng cách 
click phải vào file thực thi .exe của ứng dụng, chọn 

Properties\Details và

xemở dòng File version hoặc Product version để biết số version của ứng dụng.

!define VER "0.0.0.0"   ; insert version of launcher,first two digits are 
version numbers, last digit is packet revision

3.3. Với hằng EXE: thêm vào giữa " " tên file thực thi chính của ứng dụng được 
làm Portable kèm định dạng .exe. Vì portable yêu cầu quyền admin 

nênnếu

có 2 file 

Program.exe và Program(Admin).exe bạn có thể chọn file Program(Admin).exe

khai báo cho hằng EXE.

!define EXE ""  ; insert program exe name, e.g. "testapp.exe"

3.4. Với hằng REGKEYS: thêm vào giữa " " tên file .reg của ứng dụng, quy ước 
tên trùng với giá trị của hằng ${APP}, ví dụ TreeSize Free.reg (nếu 

ứng dụng

không có file 

.reg, hãy thêm dấu ; trước !define REGKEYS). Nếu Portable của bạn có sử dụng 
file 

.reg và có bật hàm REGKEYS thì bắt buộc bạn phải đặt file .reg đó vào folder 
Data của ứng dụng Portable, nếu không file quản lý sẽ không thể 

thực hiện tính

năng copy – update – restore file .reg và dẫn đến tình trạng ứng dụng không 
nhận phiên bản PRO (với những ứng dụng lưu khóa PRO VERSION 

trong Registry),

cũng như để lại rác trong Registry sau khi sử dụng.

!define REGKEYS ""3.5. Theo NSIS, nó chỉ định nghĩa chính xác hằng $EXEDIR khi 
trước nó có đặt hàm 

OutFile. Tuy nhiên trong khai báo cho hàm OutFile có thêm hằng ${PNAME} nên 
phải đặt OutFile sau !define PNAME nên sẽ có trình tự code 

như sau:!define PNAME "${APP} Portable" 

OutFile "..\..\${PNAME}.exe" 

!define SETTINGSFILESUSERS 
"$EXEDIR\App\${APP}\RegWorkshop.ini||$EXEDIR\App\${APP}\undo.dat||$EXEDIR

\App\${APP}\undo.idx"

Lưu ý: 

3.5.1. Trong lập trình, chỉ cần khai báo 1 lần cho 1 hằng (không bao giờ có 
khai báo 2 lần cho 1 hằng) nên dòng !define PNAME chỉ có một và nó 

phải được

đặt trước khi nó được sử dụng (trong ví dụ là dùng nó ngay trước hàm OutFile).

3.5.2. Chỉ có một hằng $EXEDIR là ngoại lệ phải đặt thêm hàm OutFile trước nó. 
Còn những hằng khác như $WINDIR thì nó đã gán sẵn đường 

dẫn đến folder Windows

của ổ cài hệ điều hành.3.6. Bạn phải thêm vào đoạn code khai báo trị all cho 
hàm SetShellVarContext trước khi sử dụng hằng 

SETTINGSFILESALLUSERS hay SETTINGSFOLDERSALLUSERS

nếu muốn sử dụng ở cấp All Users, đoạn code khai báo trị current cho hàm 

SetShellVarContext trước khi sử dụng hằng SETTINGSFILESUSERS hay 

SETTINGSFOLDERSUSERS nếu muốn sử dụng ở cấp Users.

SetShellVarContext allStrCpy "$R0" "${SETTINGSFOLDERSALLUSERS}" ; copy constant 
to working variable

SetShellVarContext current

StrCpy "$R0" "${SETTINGSFOLDERSUSERS}" ; copy constant to working variable

3.7. Với hằng SETTINGSFILESUSERS: thêm vào giữa " " đường dẫn đến file cấu hình 
của ứng dụng (thuộc cấp Users). Dùng để lưu những file 

cấu hình đơn lẻ

và phải khai báo đầy đủ đường dẫn đến file cấu hình đó kèm định dạng file. Ví 
dụ RegWorkshop.ini

sẽ tương ứng với File1.dat, undo.dat sẽ tương ứng với File2.dat, và undo.idx sẽ 
tương ứng với File3.dat. Chỉ việc copy 3 file đó vào folder 

SettingsFiles

Users và đổi lại 

tên.định dạng tương ứng như trên là xong (nhưng nhớ là trước tiên bạn phải 
thiết lập hiển thị đuôi cho file, rồi click vào file cần đổi, nhấn F2, bôi 

đen

luôn cả định dạng file rồi đổi tên thành File1.dat, File2.dat, File3.dat,…). 
Chú ý rằng nếu bạn sử dụng 2 đường dẫn trở lên (tức có sử dụng dấu || 

để phân

cách cho việc khai báo các file…) trong chuỗi nằm giữa " " trong file .nsi thì 
thứ tự 1, 2, 3…sẽ được quy ước cho các file theo thứ tự từ trái qua 

phải

trong chuỗi nằm giữa " " trong file .nsi tương ứng với File1.dat, 

File2.dat, File3.dat,…ở thư mục SettingsFiles Users.

!define SETTINGSFILESUSERS 
"$EXEDIR\App\${APP}\RegWorkshop.ini||$EXEDIR\App\${APP}\undo.dat||$EXEDIR

\App\${APP}\undo.idx"

3.8. Với hằng SETTINGSFILESALLUSERS: thêm vào giữa " " đường dẫn đến file cấu 
hình của ứng dụng (thuộc cấp All Users). Cách thiết lập 

tương tự hằng 

SETTINGSFILESUSERS.

!define SETTINGSFILESALLUSERS ""

3.9. Với hằng SETTINGSFOLDERSUSERS: thêm vào giữa " " đường dẫn đến folder cấu 
hình của ứng dụng (thuộc cấp Users) có tên có thể theo 

tên nhà sản xuất(như JAM Software) trong thư mục Application Data. Nếu phần mềm 
lưu thư mục cấu hình trong 

%APPDATA%,lưu folder chứa project trong My Documents (hoặc Documents) thì bạn 
hãy Copy những thư mục này (nếu có) vào thư mục 

SettingsFolders Users rồi

đổi tên những thư mục này thành các tên Folder1.dat, Folder2.dat, 
Folder3.dat,…Chú ý rằng nếu bạn sử dụng 2 đường dẫn trở lên (tức có sử 

dụng dấu || để

phân cách cho việc khai báo các folder…) trong chuỗi nằm giữa " " trong file 
.nsi thì thứ tự 1, 2, 3…sẽ được quy ước cho các folder theo thứ tự từ 

trái

qua phải trong chuỗi nằm giữa " " trong file .nsi

tương ứng với Folder1.dat, Folder2.dat, Folder3.dat,…ở thư mục SettingsFolders 
Users.

!define SETTINGSFOLDERSUSERS ""

3.10. Với hằng SETTINGSFOLDERSALLUSERS: thêm vào giữa " " đường dẫn đến folder 
cấu hình của ứng dụng (thuộc cấp All Users). Cách thiết 

lập tương tự hằng

SETTINGSFOLDERSUSERS.

!define SETTINGSFOLDERSALLUSERS ""

3.11. Với hằng USEREGKEYSFILE: giá trị “TRUE” đồng nghĩa với việc nếu tồn tại 
file 

.reg trong folder Data của ứng dụng portable, nó sẽ sử dụng file .reg đó thay 
vì file .reg

được định nghĩa trong !define REGKEYS.

!define USEREGKEYSFILE "TRUE"

3.12. Với hằng DELETEREGKEYS: giá trị “TRUE” đồng nghĩa với việc nếu bạn có 
file 

.reg và hệ thống Registry của bạn cũng tồn tại các key trong file .reg đó, sau 
khi file quản lý tiến hành backup registry, nó sẽ xóa đi các key đang 

tồntại trong Registry và tiến hành Merge những key trong file .reg được bạn 
định nghĩa ở !define REGKEYS.

!define DELETEREGKEYS "TRUE"

3.13. Với hằng INSTALLSOURCES: giá trị “TRUE” đồng nghĩa với việc khi bạn khởi 
động file quản lý ${APP} Portable.exe, nó sẽ add vào folder 

Other\${PNAME}

Source

các file như ${PNAME}.ico, ${PNAME}.jpg, Readme.txt.

!define INSTALLSOURCES "TRUE"

3.14. Với hằng INSTALLDEFAULTS: giá trị “TRUE” đồng nghĩa với việc khi khởi 
động file quản lý ${APP} Portable.exe, nó sẽ add file .reg mặc 

định vào folder

Data (nếu như trên bạn có sử dụng hằng REGKEYS). Tuy nhiên nó không cần thiết 
do đó các bạn nên để như mặc định là "FALSE".

!define INSTALLDEFAULTS "FALSE"

3.15. Thêm dấu ; ngay trước hàm để vô hiệu hóa hàm (hay biến hàm thành phần 
giải thích). Ví dụ nếu hằng SPLASHIMAGE được định nghĩa thì 

nósẽ khởi động

một file ảnh có tên ${APP} Portable.jpg trước khi bắt đầu launch file thực thi 
chính và bạn phải chuẩn bị một file ảnh ${APP} Portable.jpg đặt 

trong folder

${PNAME} Source của ứng dụng portable. Hãy thêm dấu ; trước !define SPLASHIMAGE 
nếu bạn muốn hủy bỏ đi hằng này

; !define SPLASHIMAGE "${PNAME}.jpg"

4. Khi mở file ${APP}.reg (ví dụ Office Tab.reg) bằng Notepad++ Portable nếu có 

4.1. Chứa đường dẫn C:\\Windows\\System32 (hoặc C:\\Windows) thì bạn vẫn để 
nguyên bởi khi kích hoạt file quản lý ${PNAME}.exe (ví dụ 

như Office Tab Portable.exe)

nó sẽ đổi ngược lại chính xác tên của những file File1.dat, File2.dat,... (bạn 
đã đổi tên ở phần 2.7 trên) thành tên nguyên gốc (lúc chưa đổi tên 

trong

file 

${PNAME}.nsi) rồi cho vào thư mục C:\Windows\System32 (hoặc C:\Windows). Sau đó 
file thực thi chính ${APP}.exe sẽ truy xuất file 

${APP}.reg và lúc này thì

những file với tên nguyên gốc đã tồn tại trong C:\Windows\System32 (hoặc 
C:\Windows). 

4.2. Chứa đường dẫn C:\\Program Files\\Tên phần mềm\\Tên file thực thi .exe 
(nếu không có tên nhà sản xuất) hoặc 

C:\\Program Files\\Tên nhà sản xuất\\Tên phần mềm\\Tên file thực thi .exe thì 
phải đổi thành Tên đường dẫn thư mục Portable (có thêm dấu \ 

)\\Tên file quản

lý Portable.exe (Xem bước 7 ở các bước tạo TreeSize Free Portable).

4.3. Chứa đường dẫn C:\\Program Files\\Tên phần mềm (nếu không có tên nhà sản 
xuất) hoặc C:\\Program Files\\Tên nhà sản xuất\\Tên phần mềm 

thì phải đổi

thành 

Tên đường dẫn thư mục Portable (có thêm dấu \ )\\App\\Tên phần mềm (Xem bước 7 
ở các bước tạo Office Tab Portable). 

================================================== ======

F. Các bước tạo Portable cho những phần mềm
F.A. TreeSize Free Portable
Các bạn có thể xem Clip minh họa quá trình làm TreeSize Free Portable (link 
video 

http://www.youtube.com/watch?v=ZFIy00vWe8Q)Và tham khảo bản Portable tại Những 
ứng dụng hỗ trợ tăng tốc truy xuất thông tin

(download link mediafire.com/?dx7jbljhar0u9f0, sau khi tải về thực hiện bước 7 
dưới đây để chỉnh lại đường dẫn của Portable trong file TreeSize 

Free.reg)

Mình xin viết lại hướng dẫn từ video trên

1. Monitor quá trình cài đặt của TreeSize Free bằng TU: Vào menu File -> 
Install new... -> Next -> Chọn TreeSizeFreeSetup.exe trong mục Setup 

program path

-> 

Launch setup program -> Program is installed -> Complete the monitoring process 
later.

2. Trong cửa sổ TU -> Vào thư mục Program Files\JAM Software -> Click phải vào 
tên thư mục TreeSize Free chọn Copy

3. Download Application Portable Template (Fixed By PAV).nsi, giải nén và đặt 
thư mục Application Portable Template (Fixed By PAV) trong ổ 

đĩa liên kết-> Đổi tên thư mục Application Portable Template (Fixed By PAV) 
thành TreeSize Free Portable

3.1. Mở thư mục App -> Paste thư mục TreeSize Free (đã Copy) vào -> Xóa thư mục 

${APP} -> Mở thư mục TreeSize Free -> Xóa 3 tập tin thừa unins000.*.

3.2. Vào thư mục Other -> Đổi tên thư mục ${APP} Portable Source thành TreeSize 
Free Portable Source -> Tiếp tục vào thư mục TreeSize Free 

Portable Source

-> Đổi tên file Application Portable Template (Fixed By PAV).nsi thành TreeSize 
Free Portable.nsi

3.3. Vào thư mục Data -> Xóa 3 thư mục không cần thiết SettingsFiles AllUsers, 

SettingsFolders AllUsers, SettingsFiles Users (tác giả clip nhầm thư mục này là 

SettingsFolders Users) -> Vào thư mục SettingsFolders Users -> Tạo thư mục 

Folder1.dat và nó sẽ tượng trưng cho thư mục JAM Software.

4. Trong cửa sổ TU -> Vào thư mục Application Data\JAM Software -> Click phải 
vào tên thư mục TreeSize Free chọn Copy -> Paste thư mục 

TreeSize Free (đã

Copy) vào thư mục Folder1.dat.

5. Tạo file TreeSize Free.reg: Trong cửa sổ TU -> Vào menu File -> Export -> 

Registry Changes... -> Đặt Filename là TreeSize Free và chọn lưu trong thư mục 

Data -> Click Save.

6. Mở file TreeSize Free Portable.nsi bằng Notepad++ Portable (click phải chọn 
Edit with Notepad++) -> Điền thông tin vào giữa dấu " " để trở 

thành các dòng sau (có thể nhấn Ctrl F để tìm dễ hơn):

!define APP "TreeSize Free"     ; insert application name, e.g. "TestApp"; this 
one is used for the final executable an in the directory structure

!define VER "2.6.0.159"           ; insert version of launcher,first two digits 
are version numbers, last digit is packet revision

!define EXE "TreeSizeFree.exe"            ; insert program exe name, e.g. 
"testapp.exe"

!define REGKEYS "TreeSize Free.reg"

!define SETTINGSFOLDERSUSERS "$APPDATA\JAM Software"

Vì trong thư mục $EXEDIR\App không có thư mục Folder1.dat (khác với thư mục 

$EXEDIR\Data) nên không có chữ \JAM Software ở dòng thứ 400

StrCpy "$PROGRAMDIR" "$EXEDIR\App\${APP}"

7. Mở thư mục TreeSize Free Portable -> Tô đen Copy tên đường dẫn thư mục 

TreeSize Free Portable ở thanh địa chỉ (Address Bar) -> Mở file TreeSize 
Free.reg

bằng Notepad++ Portable (click phải chọn Edit with Notepad++) -> Nhấn Ctrl H để 
hiện cửa sổ Replace -> Điền ở ô Find what là C:\\Program 

Files\\JAM Software\\TreeSize

Free\\TreeSize Free.exe -> Paste phần Tên đường dẫn thư mục TreeSize Free 
Portable vừa Copy vào và thêm dấu \ để trở thành Tên đường dẫn 

thư mục TreeSize

Free Portable (có thêm dấu \ )\\TreeSize Free Portable.exe ở ô Replace with -> 
Replace All -> OK -> Close và Save file TreeSize Free.reg lại.

8. Tính năng Context menu (menu ngữ cảnh) là chức năng khá phổ biến của nhiều 
ứng dụng vì tính tiện lợi cuả nó khi muốn mở 1 tập tin bất kỳ 

bằng việc đơn

giản chọn tên phần mềm trong danh sách hiển thị khi click chuột phải vào tập 
tin đó. Tính năng Context menu của phần mềm sẽ xuất hiện khi có 

phần key tương

ứng với tính năng này của phần mềm đó tồn tại trong Registry hay nói cách khác 
là chúng tồn tại đồng thời. Vì những Portable tạo theo 

Portableapps.com

Format có đặc điểm là xóa sạch key của Portable sau khi exit (tham khảo những 
Portable của trang Portableapps.com) nên nếu muốn vẫn còn tính 

năng Context

menu sau khi exit ứng dụng thì sẽ có 2 trường hợp sau (bước 8 này là tùy ý 
thích):

8.1. Trường hợp bạn sợ mất công nên chấp nhận để lại toàn bộ key (bao gồm cả 
những key không chứa tính năng Context menu) "rác" của 

Portable trong Registry

sau khi exit Portable: Vào thư mục Data -> Mở file TreeSize Free.reg thủ công 
bằng phần mềm Registry Editor có sẵn trong máy để Import key vào 

Registry

của Windows.

8.2. Trường hợp bạn chỉ muốn để lại key rác tối thiểu của chức năng Context 
menu trong Registry và xóa những key còn lại không liên quan đến 

tính năng

này sau khi exit Portable: bạn tách file TreeSize Free.reg ra làm 2 file 
Context.reg và TreeSize Free.reg

8.2.1. Vào thư mục Data -> Click chuột phải chọn New\Text Document -> Mở file 
New Text Document.txt này bằng Notepad của Windows.

8.2.2. Mở file TreeSize Free.reg bằng Notepad++ Portable -> Tô đen, Copy và 
Paste

dòng đầu tiên Windows Registry Editor Version 5.00 trong file TreeSize Free.reg 
vào dòng đầu tiên của file New Text Document.txt -> Nhấn Ctrl 

F để tìm theo từ khóa  Context -> Tô đen, Cut và Paste lần lượt những dòng chứa 
từ Context và cả dòng 

[HKEY_...] đứng ngay trước trong file TreeSize Free.reg vào file New Text 
Document.txt. 

8.2.3. Close và Save file New Text Document.txt lại -> Đổi tên thành 
Context.reg -> Cut và Paste file Context.reg vào thư mục TreeSize Free 

Portable ->Mở file 

Context.regthủ công bằng phần mềm Registry Editor có sẵn trong máy để Import 
key vào Registry của Windows. 
Lưu ý: nếu bạn không thực hiện bước 7mà thực hiện bước 8.2.3. này thì tính năng 
Context menu tuy có xuất hiện nhưng khi bạn click vào thì nó sẽ báo lỗi ngay 
lập tức vì không tìm thấy ứng dụng theo đường dẫn

mà bạn khai báo trong Registry. Vậy nên tốt nhất là bạn chỉnh sửa đường dẫn cho 
phù hợp trước khi load file quản lý hay để những portableapps sử dụng context

menu được hoạt động chính xác.

8.2.4. Close và Save file TreeSize Free.reg (đã chỉnh sửa) và vẫn để ở thư mục 
Data.

9. Sử dụng IcoFX Portable để tạo icon (biểu tượng) cho Portable

9.1. Vào File -> Open... -> Mục Files of type chọn Windows Binary 
(*.exe;*.dll;*ocx;*.icl) -> Mục File name chọn file thực thi TreeSizeFree.exe 
để 

lấy icon của file này -> Click Open -> Click Extract. 

9.2. Click vào biểu tượng Start của Windows trong chương trình IcoFX Portable

(Create Windows Icon From Image) -> Tích chọn toàn bộ -> Click OK -> Vào File 
-> 

Save -> Lưu lại với tên TreeSize Free Portable trong thư mục TreeSize Free 
Portable Source.

10. Cuối cùng là mở file TreeSize Free Portable.nsi bằng NSIS Portable. Chạy 
file 

NSISPortable\NSISPortable.exe. Trong cột Compiler click vào tùy chọn Compile 
NSI scripts rồi kéo thả file TreeSize Free Portable.nsi vào cửa sổ 

hiện ra, nếu mọi chuyện tốt đẹp thì bạn sẽ thấy cửa sổ như hình, nếu không thì 
chương trình sẽ báo lỗi và thông báo lỗi chỗ nào và bạn có thể chỉnh sửa 

cho đúng.

File thực thi TreeSize Free Portable.exe sẽ được tạo ra và lưu ở thư mục 
TreeSize Free Portable.

F.B. Office Tab Portable
Các bạn có thể tham khảo bản Portable tại download link 

mediafire.com/?258dzdufnfping5, sau khi tải về thực hiện bước 7 dưới đây để 
chỉnh lại đường dẫn của Portable trong file Office Tab.reg

Các bước hướng dẫn tương tự trên 

1. Monitor quá trình cài đặt của Office Tab bằng TU: Vào menu File -> Install 
new... -> 

Next -> Chọn SetupOfficeTabEnterprise.exe trong mục Setup program path -> 

Launch setup program -> Cài đặt phần mềm -> Copy file 

Crack\OfficeTabFunction.dll -> Paste đè vào thư mục C:\Windows\System32 -> Đăng 
ký phần mềm với key, name cung cấp trong file 

Crack\Cara Registrasi + Serial.txt -> OK -> Vào lại TU chọn Program is 
installed -> Complete the monitoring process later.

2. Trong cửa sổ TU -> Vào thư mục Program Files\Detong -> Click phải vào tên 
thư mục Office Tab chọn Copy

3. Download Application Portable Template (Fixed By PAV).nsi, giải nén và đặt 
thư mục Application Portable Template (Fixed By PAV) trong ổ 

đĩa liên kết

-> Đổi tên thư mục Application Portable Template (Fixed By PAV) thành Office 
Tab Portable

3.1. Mở thư mục App -> Paste thư mục Office Tab (đã Copy) vào -> Xóa thư mục 

${APP} -> Mở thư mục Office Tab -> Xóa 2 tập tin thừa unins000.*.

3.2. Vào thư mục Other -> Đổi tên thư mục ${APP} Portable Source thành Office 
Tab Portable Source -> Tiếp tục vào thư mục Office Tab Portable 

Source ->

Đổi tên file 

Application Portable Template (Fixed By PAV).nsi thành Office Tab Portable.nsi

3.3. Vào thư mục Data -> Xóa 3 thư mục không cần thiết SettingsFiles AllUsers, 

SettingsFolders AllUsers, SettingsFolders Users.

4. Trong cửa sổ TU -> Vào thư mục C:\Windows\system32 -> Click chọn tập tin đầu 
là 

ArmAccess.dll -> Nhấn Shift click chọn vào tập tin cuối là OTB_Loader.dll để 
chọn 4 tập tin -> Click phải chọn Copy -> Paste vào thư mục 

SettingsFiles Users

-> Đổi tên các tập tin theo thứ tự tên A,B thành File1.dat,..., File4.dat.

5. Tạo file Office Tab.reg: Trong cửa sổ TU -> Vào menu File -> Export -> 
Registry Changes... -> Đặt Filename là Office Tab và chọn lưu trong thư 

mục Data-> Click 

Save.

6. Mở file Office Tab Portable.nsi bằng Notepad++ Portable (click phải chọn 
Edit with Notepad++) -> Điền thông tin vào giữa dấu " " để trở thành 

các dòng

sau (có thể nhấn Ctrl F để tìm dễ hơn):

!define APP "Office Tab"          ; insert application name, e.g. "TestApp"; 
this one is used for the final executable an in the directory structure

!define VER "7.5.0.0"   ; insert version of launcher,first two digits are 
version numbers, last digit is packet revision

!define EXE "OfficeTabCenter(Admin).exe"      ; insert program exe name, e.g. 
"testapp.exe"

!define REGKEYS "Office Tab.reg"

!define SETTINGSFILESUSERS 

"$WINDIR\system32\ArmAccess.dll||$WINDIR\system32\Officetab_Detong.ocx||$WINDIR\system32\OfficeTabFunction.dll||$WINDIR\system32

\OTB_Loader.dll"

7. Mở thư mục Office Tab Portable\App\Office Tab -> Tô đen Copy tên đường dẫn 
thư mục Office Tab Portable\App ở thanh địa chỉ (Address 

Bar) -> Mở file

Office Tab.reg bằng Notepad++ Portable (click phải chọn Edit with Notepad++) -> 
Nhấn Ctrl H để hiện cửa sổ Replace -> Điền ở ô Find what là 

C:\\Program

Files\\Detong\\Office Tab -> Paste phần Tên đường dẫn thư mục Office Tab 
Portable\App\Office Tab

vừa Copy vào và thêm dấu \ để trở thành Tên đường dẫn thư mục Office Tab 
Portable (có thêm dấu \ )\\App\\Office Tab ở ô Replace with -> 

Replace All ->

OK -> Close và Save file Office Tab.reg lại.

8. Tính năng mở theo thẻ Tab của Office Tab trong Office sẽ xuất hiện khi có 
key của phần mềm tồn tại trong Registry, file của phần mềm tồn tại 

trong C:\Windows\System32

(nói cách khác là tính năng mở theo thẻ Tab phải tồn tại đồng thời với key, 
file của Office Tab trong máy). Tuy nhiên những Portable tạo theo 

Portableapps.com

Format có đặc điểm là xóa sạch key, file của Portable sau khi exit (tham khảo 
những Portable của trang Portableapps.com) nên nếu muốn vẫn còn 

tính năng

mở theo thẻ Tab sau khi exit Portable (bước 8 này là tùy ý thích) thì bạn hãy 

8.1. Vào thư mục Office Tab Portable -> Tạo thư mục Backup -> Mở cửa sổ TU -> 
Vào thư mục C:\Windows\system32 -> Click chọn tập tin đầu là 

ArmAccess.dll-> Nhấn Shift click chọn vào tập tin cuối là OTB_Loader.dll để 
chọn 4 tập tin -> Click phải chọn Copy -> Paste vào thư mục 

Backup.8.2. Vào thư mục Office Tab Portable -> Click phải -> New -> Text 
Document -> Đổi tên thành Set.bat -> Click phải vào Set.bat -> Edit -> 

Paste vào nội

dung sau

@echo off

reg import "%cd%\Data\Office Tab.reg"

copy "%cd%\Backup\ArmAccess.dll" "C:\Windows\system32"

copy "%cd%\Backup\Officetab_Detong.ocx" "C:\Windows\system32"

copy "%cd%\Backup\OfficeTabFunction.dll" "C:\Windows\system32"

copy "%cd%\Backup\OTB_Loader.dll" "C:\Windows\system32"

exit8.3. Close và Save Set.bat lại -> Mở file Set.bat (Enter hoặc Double 
click), file này sẽ có chức năng nhập key trong file Office Tab.reg vào 

Registry và

copy 4 file trong thư mục Backup vào thư mục C:\Windows\system32.

9. Sử dụng IcoFX Portable để tạo icon (biểu tượng) cho Portable

9.1. Vào File -> Open... -> Mục Files of type chọn Windows Binary 
(*.exe;*.dll;*ocx;*.icl) -> Mục File name chọn file thực thi TreeSizeFree.exe 
để 

lấy

icon của file này -> Click Open -> Click Extract. 

9.2. Click vào biểu tượng Start của Windows trong chương trình IcoFX Portable

(Create Windows Icon From Image) -> Tích chọn toàn bộ -> Click OK -> Vào File 
-> 

Save -> Lưu lại với tên Office Tab Portable trong thư mục Office Tab Portable 
Source.

10. Cuối cùng là mở file Office Tab Portable.nsi bằng NSIS Portable. Chạy file 

NSISPortable\NSISPortable.exe. Trong cột Compiler click vào tùy chọn Compile 
NSI scripts rồi kéo thả file Office Tab Portable.nsi vào cửa sổ 

hiện ra, nếu

mọi chuyện tốt đẹp thì bạn sẽ thấy của số như hình, nếu không thì chương trình 
sẽ báo lỗi và thông báo lỗi chỗ nào và bạn có thể chỉnh sửa cho 

đúng. File

thực thi 

Office Tab Portable.exe sẽ được tạo ra và lưu ở thư mục Office Tab Portable.

Khi kiên trì đến bước này là bạn có thể tận hưởng thành quả của mình rồi đấy!đá 
lông nheo

Nếu các bạn muốn đơn giản hơn nữa, có thể dùng phần mềm tạo Portable "thật" có 
tên gọi là 

Portable App Creator (xem video hướng dẫn trong Youtube 
http://www.youtube.com/watch?v=sYdi9XsrXwY hoặc 

http://www.youtube.com/watch?v=itqzdCJKWUc). 

Lưu ý: Phần mềm này có thể tạo ra file, key rác trong máy như Winrar nên cũng 
không lý tưởng để tạo Portable "thật" lắm!

Mình đã xem và viết lại hướng dẫn từ các Video trên:

1. Tải Portable App Creator tại link Rapid (0.63MB) (nước ngoài thích upload 
lên host này) https://rapidshare.com/files/2673249...nglish.paf.exe và 

AutoIt

(file nén 7-zip) 

http://www.autoitscript.com/files/au...oit-v3-sfx.exe

2. Chạy file PortableAppCreator_0__99_beta_English.paf.exe để chọn nơi bung nén 
(việc làm này không tạo file, key rác) ra thư mục 

PortableAppCreator

3. Giải nén (Extract) autoit-v3-sfx.exe ra thư mục install. Trong thư mục này, 
bạn copy file AutoIt3.exe paste vào thư mục 

PortableAppCreator\App

4. Mở (enter hoặc double click) file Portable App Creator.exe

4.1. Trong thư mục PortableAppCreator, xuất hiện thông báo "Searching for 
the..." -> Click Done

4.2. Xuất hiện thông báo Portable device located at drive -> Chọn tên ổ đĩa 
muốn lưu Portable -> Click Next -> Click Browse -> Chọn tên file Setup 

của

chương trình cần tạo Portable -> Click Open -> Click Next

5. Ở bước đầu tiên là tùy chọn Take 1st Shot -> Click Next

6. Ở bước thứ hai là tùy chọn Install/Application -> Click Next -> Xuất hiện 
thông báo 

Please install the application to your PortableApps Drive -> Click OK -> Chỉnh 
các tùy chọn khi cài đặt phần mềm như bình thường (như chọn 

Destination Folder,...)

-> Click Done

7. Ở bước thứ ba là tùy chọn Get Shortcut Info (lấy thông tin Shortcut như 
Icon) -> Click Next -> Xuất hiện 2 tùy chọn 

7.1. Ở tùy chọn Type the location of the application to run -> Click Browse -> 
Chọn tên file thực thi ".exe" của chương trình đã cài đặt -> Click 

Open

7.2. Ở tùy chọn Type a name for the PortableApp and choose an icon -> Đặt tên 
Portable theo ý muốn bản thân -> Click Icon -> Chọn lại tên file 

thực thi

".exe" ở trên hoặc file ".ico" đã tạo ra trước đó bằng phần mềm IcoFX Portable 
-> Click Open -> Click Next

8. Ở bước thứ tư là tùy chọn Open/Close -> Click Next -> Xuất hiện bảng thông 
báo 

Please make all modifications... (hãy chỉnh sửa phần mềm theo ý muốn bản thân) 
-> Close phần mềm để tiếp tục -> Click OK

9. Quan sát ở góc phải của Taskbar nếu thấy xuất hiện biểu tượng của chương 
trình vừa cài đặt thì click phải chọn Exit để thoát (mục đích không 

cho chương

trình chạy và công đoạn tạo Portable dưới đây mới có thể tiếp tục được)

10. Ở bước thứ năm là tùy chọn Take 2nd Shot -> Click Next11. Ở bước thứ sáu là 
tùy chọn Process Shots -> Click Next -> Click Next lần nữa -> 

Xuất hiện bảng thông báo Creating the folder... -> Click Done và tận

hưởng thành quả! 
================================================== ======

Mời các bạn đóng góp thêm nhiều kinh nghiệm sử dụng cũng như phần mềm tạo 
Portable khác nữa!ôm một cái

Chúc các bạn vui vẻ, mạnh khỏe và thành công trong cuộc sống!

Lưu ý: Đây là những hướng dẫn dựa trên những bài viết ở trang 
Portableappsviet.com của tác giả NGOCHUY1991

Other related posts: