๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
C++, MFC

[C++ / MFC] Visual Studio์—์„œ msi ์„ค์น˜ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ (2)

by dev_drive 2022. 12. 20.
๋ฐ˜์‘ํ˜•

 

๐Ÿ”ฝ ์ดˆ๊ธฐ ์„ธํŒ…์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์ด์ „ ์ฑ•ํ„ฐ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”

 

[C++ / MFC] Visual Studio์—์„œ ์„ค์น˜ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ (1)

์ธ์Šคํ†จ์‰ด๋“œ ๊ฐ™์€ ํˆด์ด ์ง€์›๋˜๋Š” ๊ธฐ๋Šฅ๋„ ๋งŽ๊ณ  ๊ฐ„ํŽธํ•˜๊ธด ํ•˜์ง€๋งŒ Visual Studio์—์„œ ํ™•์žฅํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ง€์›๋˜๋Š” ํˆด๋„ ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ ๊ธฐ๋ณธ์ ์ธ ์„ค์น˜ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š”๋ฐ๋Š” ํฌ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์†Œ

dev-drive.tistory.com


โ€ป Installer ํ”„๋กœ์ ํŠธ ์†์„ฑ

 

โ€ป ์‚ฌ์šฉํ•  ๋งŒํ•œ ์˜ต์…˜๋“ค์— ๋Œ€ํ•ด์„œ๋งŒ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

ํ•ญ๋ชฉ ์„ค๋ช…
AddRemoveProgramIcon ํ”„๋กœ๊ทธ๋žจ ์ถ”๊ฐ€/์ œ๊ฑฐ์— ํ‘œ์‹œ๋˜๋Š” ์•„์ด์ฝ˜ ์„ค์ •
Author ํšŒ์‚ฌ ์ด๋ฆ„, ๊ฐœ์ธ ์ด๋ฆ„ ๋“ฑ ์›์ž‘์ž ์ด๋ฆ„ ์„ค์ •
DetectNewerInstalledVersion ์„ค์น˜ํ•˜๋Š” ๋™์•ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ตœ์‹  ๋ฒ„์ „์„ ํ™•์ธํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€์ •
InstallAllUsers ๋ชจ๋“  ์‚ฌ์šฉ์ž์šฉ์œผ๋กœ ์„ค์น˜ / ์ž์‹ ๋งŒ ์„ค์น˜ ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •
Localization ๋ฌธ์ž์—ด ๋ฆฌ์†Œ์Šค / ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ๋กœ์ผ€์ผ ์„ค์ •
Manufacturer ์ œ์กฐ์—…์ฒด ์ด๋ฆ„ ์„ค์ •
ManufacturerUrl ์ œ์กฐ์—…์ฒด ์›น ์‚ฌ์ดํŠธ URL ์„ค์ •
PostBuildEvent ๋นŒ๋“œ๊ฐ€ ๋๋‚œ ํ›„ ์‹คํ–‰๋  ๋ช…๋ น ์„ค์ •
PreBuildEvent ๋นŒ๋“œ ์ด์ „์— ์‹คํ–‰๋  ๋ช…๋ น ์„ค์ •
ProductName ์ œํ’ˆ ์ด๋ฆ„ ์„ค์ •
RemovePreviousVersions ์„ค์น˜ํ•  ๋•Œ ์ด์ „ ๋ฒ„์ „์„ ์ œ๊ฑฐํ• ์ง€ ์—ฌ๋ถ€ ์„ค์ •
RunPostBuildEvent ๋นŒ๋“œ ํ›„ ์ด๋ฒคํŠธ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์กฐ๊ฑด ์„ค์ •
TargetPlatform ๋Œ€์ƒ ํ”Œ๋žซํผ ์ง€์ •
Title ์ธ์Šคํ†จ๋Ÿฌ ํƒ€์ดํ‹€ ์ง€์ •
Version ์ธ์Šคํ†จ๋Ÿฌ ๋ฒ„์ „ ์ง€์ •

 

 

 

โ€ป Installer ํ”„๋กœ์ ํŠธ ์ƒ์„ธ ์„ค์ •

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ํŠน์ • ๊ฐ’ ์ €์žฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๊ณ 

์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์„ค์น˜ ์ค‘ ๋‚˜์˜ค๋Š” ํ™”๋ฉด์„ ๊พธ๋ฏธ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ํŠน์ • ์œ„์น˜์— ํŒŒ์ผ์ด๋‚˜ ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ˆœ์„œ๋Œ€๋กœ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

1. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ถ”๊ฐ€

[Manufacturer]๋Š” [โ€ป Installer ํ”„๋กœ์ ํŠธ ์†์„ฑ] ์—์„œ ์„ค์ •ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. 

AlwaysCreate๋ฅผ True๋กœ ์„ค์ •ํ•ด์•ผ ํด๋”๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. 

 

 

์„ค์น˜ ํ›„ regedit๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ™•์ธํ•ด๋ณด๋ฉด ํ•ด๋‹น ์œ„์น˜์— ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๊ฐ’์ด ์ €์žฅ๋œ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

2. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์„ค์ •

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐฐ๋„ˆ, ํ…์ŠคํŠธ, ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ” ํ‘œ์‹œ ์—ฌ๋ถ€ ๋“ฑ ๊ฐ„๋‹จํ•œ ํ•ญ๋ชฉ๋“ค์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ 

Start, Progress, End ํ•ญ๋ชฉ์—์„œ ์šฐํด๋ฆญํ•ด์„œ ๋Œ€ํ™”์ƒ์ž ์ถ”๊ฐ€ ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜๋ฉด

์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

BannerBitmap์€ ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์น˜ํ•  ๋•Œ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์–ด์•ผ๋˜๋ฏ€๋กœ ์ธ์Šคํ†จ๋Ÿฌ ํ”„๋กœ์ ํŠธ์— ํฌํ•จ๋œ ์ด๋ฏธ์ง€๋งŒ ์ถ”๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐ๋„ˆ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์‚ฌ์šฉ์ž pc์— ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ํŒŒ์ผ์ด๋ฉด Exclude ์˜ต์…˜์„ ์ฃผ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ •ํ™•ํ•œ ํฌ๊ธฐ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ 492 x 68์ •๋„ ํฌ๊ธฐ์˜ ์ด๋ฏธ์ง€๋ฉด ๋ญ‰๊ฐœ์ง€์ง€์•Š๊ณ  ์ž˜ ๋‚˜์˜ค๋Š”๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

CopyrightWarning๊ณผ WelcomeText์— ์„ค์ •๋œ ๊ฐ’์€ ๊ธฐ๋ณธ๊ฐ’์ธ๋ฐ ์˜์–ด๋กœ ์ž…๋ ฅ๋˜์–ด ์žˆ์ง€๋งŒ

ํ•œ๊ธ€๋กœ ๋‚˜์˜ค๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์•„๋งˆ ๋ฌธ์ž์—ด ํ…Œ์ด๋ธ”์ด ์žˆ๊ณ  ์„ค์ •๋œ locale์— ๋”ฐ๋ผ ์–ธ์–ด๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ € ํ…์ŠคํŠธ์—์„œ ์กฐ๊ธˆ์ด๋ผ๋„ ์ˆ˜์ •ํ•˜๋ฉด ์ž…๋ ฅํ•œ ์˜์–ด ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

 

๋”ฐ๋กœ ์ž…๋ ฅํ•ด์•ผ ๋  ์•ˆ๋‚ด๋ฌธ์ด ์žˆ๋‹ค๋ฉด ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

 

3. ํŒŒ์ผ ์‹œ์Šคํ…œ ์„ค์ •

ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ๋ณด์‹œ๋‹ค์‹œํ”ผ ์„ค์น˜ํ•  ๋•Œ ํŠน์ • ์œ„์น˜์— ํŒŒ์ผ์ด๋‚˜ ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

 

์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•  ๋•Œ Common Files ํด๋” ์•„๋ž˜์— SetupTest ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  compluslm.dll์„ ๋ณต์‚ฌํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

 

 

โ€ป ํด๋”์˜ ์‹ค์ œ ๊ฒฝ๋กœ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.  (64๋น„ํŠธ ๊ธฐ์ค€)

ํ•ญ๋ชฉ ์„ค๋ช…
๊ณต์šฉ ํŒŒ์ผ ํด๋” C:\Program Files (x86)\Common Files
๊ณต์šฉ ํŒŒ์ผ(64๋น„ํŠธ) ํด๋” C:\Program Files\Common Files
๊ธ€๊ผด ํด๋” C:\Windows\Fonts
ํ”„๋กœ๊ทธ๋žจ ํŒŒ์ผ ํด๋” C:\Program Files (x86)
ํ”„๋กœ๊ทธ๋žจ ํŒŒ์ผ(64๋น„ํŠธ) ํด๋” C:\Program Files
์‹œ์Šคํ…œ ํด๋” C:\Windows\SysWOW64
์‹œ์Šคํ…œ(64๋น„ํŠธ) ํด๋” C:\Windows\System32
์‚ฌ์šฉ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ์ดํ„ฐ ํด๋”  C:\Users\UserName\AppData\Roaming
์‚ฌ์šฉ์ž ๋ฐ”ํƒ• ํ™”๋ฉด C:\Users\UserName\Desktop
์‚ฌ์šฉ์ž ์ฆ๊ฒจ์ฐพ๊ธฐ ํด๋” C:\Users\UserName\Favorites
์‚ฌ์šฉ์ž ๊ฐœ์ธ ๋ฐ์ดํ„ฐ ํด๋” C:\Users\UserName\Documents
์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ ๋ฉ”๋‰ด C:\Users\UserName\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
์‚ฌ์šฉ์ž ๋ณด๋‚ด๊ธฐ ๋ฉ”๋‰ด C:\Users\UserName\AppData\Roaming\Microsoft\Windows\SendTo
์‚ฌ์šฉ์ž ์‹œ์ž‘ ๋ฉ”๋‰ด C:\Users\UserName\AppData\Roaming\Microsoft\Windows\Start Menu
์‚ฌ์šฉ์ž ์‹œ์ž‘ ํด๋” C:\Users\UserName\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
์‚ฌ์šฉ์ž ํ…œํ”Œ๋ฆฟ ํด๋” C:\Users\UserName\AppData\Roaming\Microsoft\Windows\Templates
Windows ํด๋” C:\Windows
์ „์—ญ ์–ด์…ˆ๋ธ”๋ฆฌ ์บ์‹œ ํด๋” C:\Windows\assembly
์‚ฌ์šฉ์ž ์ง€์ • ํด๋” ์›ํ•˜๋Š” ํด๋” ์ง€์ •

 

์—ฌ๊ธฐ์„œ ์‚ฌ์šฉ์ž ์ง€์ • ํด๋”๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ์ž…๋ ฅํ•ด๋„ ๋˜์ง€๋งŒ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ง€์›๋˜๋Š” ๋งคํฌ๋กœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 

ํ•ญ๋ชฉ์—๋Š” ์ด์ •๋„๋งŒ ๋‚˜์˜ค์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ๋งคํฌ๋กœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

[WindowsVolume] = ์œˆ๋„์šฐ๊ฐ€ ์„ค์น˜๋œ ๋“œ๋ผ์ด๋ธŒ

[Manufacturer] = ์ œ์กฐ์—…์ฒด ์ด๋ฆ„

[ProductName] = ์ œํ’ˆ ์ด๋ฆ„  

...

 

 

์˜ˆ๋ฅผ ๋“ค์–ด ์œ„์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ์„ค์ • ํ›„ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜๋ฉด ์•„๋ž˜ ์ฒ˜๋Ÿผ ํ•ด๋‹น ํด๋”์— ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. 

์ด๋•Œ ํด๋”๊ฐ€ ์—†์œผ๋ฉด ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์œผ๋‹ˆ AlwaysCreate ์˜ต์…˜์„ True๋กœ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค.

 

 

 

์œ„ ์˜ˆ์ œ๋Š” ๋งคํฌ๋กœ๋ฅผ ํ™œ์šฉํ•ด์„œ DefaultLocation ์˜ต์…˜์— ๊ฐ’์„ ์ž…๋ ฅํ•ด์„œ ์ฒ˜๋ฆฌํ–ˆ์ง€๋งŒ

์•„๋ž˜์™€ ๊ฐ™์ด ์ง์ ‘ ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

 

์ถ”๊ฐ€์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ.exe๊ฐ€ ์ƒ์„ฑ๋  Application Folder๋Š” ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผ๋˜๊ธฐ ๋•Œ๋ฌธ์—

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ AlwaysCreate ์˜ต์…˜์„ True๋กœ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค.

์ด ์œ„์น˜์— ํ”„๋กœ๊ทธ๋žจ.exe๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํ•„์š”ํ•œ dll์ด๋‚˜ ํŒŒ์ผ๋“ค์ด ์žˆ๋‹ค๋ฉด ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. 

 

 

Application Folder > ์šฐํด๋ฆญ > Add > ํ”„๋กœ์ ํŠธ ์ถœ๋ ฅ > ๊ธฐ๋ณธ ์ถœ๋ ฅ์„ ์ถ”๊ฐ€ํ•˜๋ฉด

ํ”„๋กœ์ ํŠธ์—์„œ ๋นŒ๋“œํ•œ exe, dll ๋“ฑ์ด ์„ค์ •ํ•œ ๊ฒฝ๋กœ์— ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค.

 

 

 

๐Ÿ”ฝ ์ž์„ธํ•œ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด์„ธ์š”

 

Getting Started With Setup Projects - Simple Talk

This article describes the basics of Visual Studio setup and deployment projects. Subsequent articles will cover more on custom actions, .NET installer classes, and an upgrade for the product.

www.red-gate.com

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€