1@echo off
2@echo Salt Windows Build Package Script
3@echo =====================================================================
4@echo.
5
6:: Get Passed Parameters
7@echo Get Passed Parameters...
8@echo ---------------------------------------------------------------------
9Set "Version="
10Set "Python="
11:: First Parameter
12if not "%~1"=="" (
13    echo.%1 | FIND /I "=" > nul && (
14        :: Named Parameter
15        set "%~1"
16    ) || (
17        :: Positional Parameter
18        set "Version=%~1"
19    )
20)
21:: Second Parameter
22if not "%~2"=="" (
23    echo.%2 | FIND /I "=" > nul && (
24        :: Named Parameter
25        set "%~2"
26    ) || (
27        :: Positional Parameter
28        set "Python=%~2"
29    )
30)
31
32:: If Version not defined, Get the version from Git
33if "%Version%"=="" (
34    for /f "delims=" %%a in ('git describe') do @set "Version=%%a"
35)
36
37:: If Python not defined, Assume Python 3
38if "%Python%"=="" (
39    set Python=3
40)
41
42:: Verify valid Python value (3)
43:: We may need to add Python 4 in the future (delims=34)
44set "x="
45for /f "delims=3" %%i in ("%Python%") do set x=%%i
46if Defined x (
47    echo Invalid Python Version specified. Must be 3. Passed %Python%
48    goto eof
49)
50@echo.
51
52:: Define Variables
53@echo Defining Variables...
54@echo ----------------------------------------------------------------------
55if %PyDir%=="" (Set "PyDir=C:\Python38")
56if %PyVerMajor%=="" (Set "PyVerMajor=3")
57if %PyVerMinor%=="" (Set "PyVerMinor=8")
58
59:: Verify the Python Installation
60If not Exist "%PyDir%\python.exe" (
61    @echo Expected version of Python not found: Python %PyVerMajor%.%PyVerMinor%"
62    exit /b 1
63)
64
65Set "CurDir=%~dp0"
66Set "BldDir=%CurDir%buildenv"
67Set "BinDir=%CurDir%buildenv\bin"
68Set "CnfDir=%CurDir%buildenv\conf"
69Set "InsDir=%CurDir%installer"
70Set "PreDir=%CurDir%prereqs"
71for /f "delims=" %%a in ('git rev-parse --show-toplevel') do @set "SrcDir=%%a"
72
73:: Find the NSIS Installer
74If Exist "C:\Program Files\NSIS\" (
75    Set "NSIS=C:\Program Files\NSIS\"
76) Else (
77    Set "NSIS=C:\Program Files (x86)\NSIS\"
78)
79If not Exist "%NSIS%NSIS.exe" (
80    @echo "NSIS not found in %NSIS%"
81    exit /b 1
82)
83
84:: Add NSIS to the Path
85Set "PATH=%NSIS%;%PATH%"
86@echo.
87
88:: Check for existing bin directory and remove
89If Exist "%BinDir%\" (
90    @echo Removing %BinDir%
91    @echo ----------------------------------------------------------------------
92    rd /S /Q "%BinDir%"
93)
94
95:: Copy the contents of the Python Dir to bin
96@echo Copying "%PyDir%" to bin...
97@echo ----------------------------------------------------------------------
98@echo xcopy /E /Q "%PyDir%" "%BinDir%\"
99xcopy /E /Q "%PyDir%" "%BinDir%\"
100@echo.
101
102:: Copy the default master and minion configs to buildenv\conf
103@echo Copying configs to buildenv\conf...
104@echo ----------------------------------------------------------------------
105@echo xcopy /E /Q "%SrcDir%\conf\master" "%CnfDir%\"
106xcopy /Q /Y "%SrcDir%\conf\master" "%CnfDir%\"
107@echo xcopy /E /Q "%SrcDir%\conf\minion" "%CnfDir%\"
108xcopy /Q /Y "%SrcDir%\conf\minion" "%CnfDir%\"
109@echo.
110
111@echo Copying SSM to buildenv
112@echo ----------------------------------------------------------------------
113
114:: Set the location of the ssm to download
115Set Url64="https://repo.saltproject.io/windows/dependencies/64/ssm-2.24-103-gdee49fc.exe"
116Set Url32="https://repo.saltproject.io/windows/dependencies/32/ssm-2.24-103-gdee49fc.exe"
117
118:: Check for 64 bit by finding the Program Files (x86) directory
119If Defined ProgramFiles(x86) (
120    powershell -ExecutionPolicy RemoteSigned -File download_url_file.ps1 -url "%Url64%" -file "%BinDir%\ssm.exe"
121) Else (
122    powershell -ExecutionPolicy RemoteSigned -File download_url_file.ps1 -url "%Url32%" -file "%BinDir%\ssm.exe"
123)
124@echo.
125
126:: Make sure the "prereq" directory exists and is empty
127If Exist "%PreDir%" rd /s /q "%PreDir%"
128mkdir "%PreDir%"
129
130:: 32 bit binaries only needed for x86 installer
131:: ProgramFiles(x86) is defined on AMD64 systems
132:: If it's defined, skip the x86 binaries
133If Defined ProgramFiles(x86) goto dependencies_x64
134
135:dependencies_x86
136@echo.
137@echo Copying VCRedist 2013 X86 to Prerequisites
138@echo ----------------------------------------------------------------------
139set Url=http://repo.saltproject.io/windows/dependencies/32/vcredist_x86_2013.exe
140set Name=vcredist_x86_2013.exe
141@echo - Downloading %Name%
142powershell -ExecutionPolicy RemoteSigned -File download_url_file.ps1 -url %Url% -file "%PreDir%\%Name%"
143
144@echo.
145@echo Copying Universal C Runtimes X86 to Prerequisites
146@echo ----------------------------------------------------------------------
147set Url=http://repo.saltproject.io/windows/dependencies/32/ucrt_x86.zip
148set Name=ucrt_x86.zip
149@echo - Downloading %Name%
150powershell -ExecutionPolicy RemoteSigned -File download_url_file.ps1 -url %Url% -file "%PreDir%\%Name%"
151
152goto prereq_end
153
154:: These are only needed on 64bit installer
155:dependencies_x64
156@echo.
157@echo Copying VCRedist 2013 X64 to Prerequisites
158@echo ----------------------------------------------------------------------
159set Url=http://repo.saltproject.io/windows/dependencies/64/vcredist_x64_2013.exe
160set Name=vcredist_x64_2013.exe
161@echo - Downloading %Name%
162powershell -ExecutionPolicy RemoteSigned -File download_url_file.ps1 -url %Url% -file "%PreDir%\%Name%"
163
164@echo.
165@echo Copying Universal C Runtimes X64 to Prerequisites
166@echo ----------------------------------------------------------------------
167set Url=http://repo.saltproject.io/windows/dependencies/64/ucrt_x64.zip
168set Name=ucrt_x64.zip
169@echo - Downloading %Name%
170powershell -ExecutionPolicy RemoteSigned -File download_url_file.ps1 -url %Url% -file "%PreDir%\%Name%"
171
172:prereq_end
173
174:: Remove the fixed path in .exe files
175@echo Removing fixed path from .exe files
176@echo ----------------------------------------------------------------------
177:: As of setuptools 53.0 easy_install has been removed
178:: https://github.com/pypa/setuptools/pull/2544
179:: "%PyDir%\python" "%CurDir%\portable.py" -f "%BinDir%\Scripts\easy_install.exe"
180:: "%PyDir%\python" "%CurDir%\portable.py" -f "%BinDir%\Scripts\easy_install-%PyVerMajor%.%PyVerMinor%.exe"
181"%PyDir%\python" "%CurDir%\portable.py" -f "%BinDir%\Scripts\pip.exe"
182"%PyDir%\python" "%CurDir%\portable.py" -f "%BinDir%\Scripts\pip%PyVerMajor%.%PyVerMinor%.exe"
183"%PyDir%\python" "%CurDir%\portable.py" -f "%BinDir%\Scripts\pip%PyVerMajor%.exe"
184"%PyDir%\python" "%CurDir%\portable.py" -f "%BinDir%\Scripts\wheel.exe"
185@echo.
186
187@echo Cleaning up unused files and directories...
188@echo ----------------------------------------------------------------------
189:: Remove all Compiled Python files (.pyc)
190del /S /Q "%BinDir%\*.pyc" 1>nul
191:: Remove all Compiled HTML Help (.chm)
192del /S /Q "%BinDir%\*.chm" 1>nul
193:: Remove all empty text files (they are placeholders for git)
194del /S /Q "%BinDir%\..\empty.*" 1>nul
195
196:: Delete Unused Docs and Modules
197If Exist "%BinDir%\Doc"           rd /S /Q "%BinDir%\Doc"
198If Exist "%BinDir%\share"         rd /S /Q "%BinDir%\share"
199If Exist "%BinDir%\tcl"           rd /S /Q "%BinDir%\tcl"
200If Exist "%BinDir%\Lib\idlelib"   rd /S /Q "%BinDir%\Lib\idlelib"
201If Exist "%BinDir%\Lib\lib-tk"    rd /S /Q "%BinDir%\Lib\lib-tk"
202If Exist "%BinDir%\Lib\test"      rd /S /Q "%BinDir%\Lib\test"
203If Exist "%BinDir%\Lib\unit-test" rd /S /Q "%BinDir%\Lib\unit-test"
204
205:: Delete Unused .dll files
206If Exist "%BinDir%\DLLs\tcl85.dll"    del /Q "%BinDir%\DLLs\tcl85.dll"    1>nul
207If Exist "%BinDir%\DLLs\tclpip85.dll" del /Q "%BinDir%\DLLs\tclpip85.dll" 1>nul
208If Exist "%BinDir%\DLLs\tk85.dll"     del /Q "%BinDir%\DLLs\tk85.dll"     1>nul
209
210:: Delete Unused .lib files
211If Exist "%BinDir%\libs\_tkinter.lib" del /Q "%BinDir%\libs\_tkinter.lib" 1>nul
212
213:: Delete .txt files
214If Exist "%BinDir%\NEWS.txt"   del /Q "%BinDir%\NEWS.txt"   1>nul
215If Exist "%BinDir%\README.txt" del /Q "%BinDir%\README.txt" 1>nul
216
217:: Delete Unneeded Python Libraries
218If Exist "%BinDir%\Lib\site-packages\pythonwin" rd /S /Q "%BinDir%\Lib\site-packages\pythonwin"
219
220:: Delete Non-Windows Modules
221If Exist "%BinDir%\Lib\site-packages\salt\modules\acme.py"^
222    del /Q "%BinDir%\Lib\site-packages\salt\modules\acme.*" 1>nul
223If Exist "%BinDir%\Lib\site-packages\salt\modules\alternatives.py"^
224    del /Q "%BinDir%\Lib\site-packages\salt\modules\alternatives.*" 1>nul
225If Exist "%BinDir%\Lib\site-packages\salt\modules\apf.py"^
226    del /Q "%BinDir%\Lib\site-packages\salt\modules\apf.*" 1>nul
227If Exist "%BinDir%\Lib\site-packages\salt\modules\aptpkg.py"^
228    del /Q "%BinDir%\Lib\site-packages\salt\modules\aptpkg.*" 1>nul
229If Exist "%BinDir%\Lib\site-packages\salt\modules\at.py"^
230    del /Q "%BinDir%\Lib\site-packages\salt\modules\at.*" 1>nul
231If Exist "%BinDir%\Lib\site-packages\salt\modules\bcache.py"^
232    del /Q "%BinDir%\Lib\site-packages\salt\modules\bcache.*" 1>nul
233If Exist "%BinDir%\Lib\site-packages\salt\modules\blockdev.py"^
234    del /Q "%BinDir%\Lib\site-packages\salt\modules\blockdev.*" 1>nul
235If Exist "%BinDir%\Lib\site-packages\salt\modules\bluez.py"^
236    del /Q "%BinDir%\Lib\site-packages\salt\modules\bluez.*" 1>nul
237If Exist "%BinDir%\Lib\site-packages\salt\modules\bridge.py"^
238    del /Q "%BinDir%\Lib\site-packages\salt\modules\bridge.*" 1>nul
239If Exist "%BinDir%\Lib\site-packages\salt\modules\bsd_shadow.py"^
240    del /Q "%BinDir%\Lib\site-packages\salt\modules\bsd_shadow.*" 1>nul
241If Exist "%BinDir%\Lib\site-packages\salt\modules\btrfs.py"^
242    del /Q "%BinDir%\Lib\site-packages\salt\modules\btrfs.*" 1>nul
243If Exist "%BinDir%\Lib\site-packages\salt\modules\ceph.py"^
244    del /Q "%BinDir%\Lib\site-packages\salt\modules\ceph.*" 1>nul
245If Exist "%BinDir%\Lib\site-packages\salt\modules\container_resource.py"^
246    del /Q "%BinDir%\Lib\site-packages\salt\modules\container_resource.*" 1>nul
247If Exist "%BinDir%\Lib\site-packages\salt\modules\cron.py"^
248    del /Q "%BinDir%\Lib\site-packages\salt\modules\cron.*" 1>nul
249If Exist "%BinDir%\Lib\site-packages\salt\modules\csf.py"^
250    del /Q "%BinDir%\Lib\site-packages\salt\modules\csf.*" 1>nul
251If Exist "%BinDir%\Lib\site-packages\salt\modules\daemontools.py"^
252    del /Q "%BinDir%\Lib\site-packages\salt\modules\daemontools.*" 1>nul
253If Exist "%BinDir%\Lib\site-packages\salt\modules\deb*"^
254    del /Q "%BinDir%\Lib\site-packages\salt\modules\deb*" 1>nul
255If Exist "%BinDir%\Lib\site-packages\salt\modules\devmap.py"^
256    del /Q "%BinDir%\Lib\site-packages\salt\modules\devmap.*" 1>nul
257If Exist "%BinDir%\Lib\site-packages\salt\modules\dpkg.py"^
258    del /Q "%BinDir%\Lib\site-packages\salt\modules\dpkg.*" 1>nul
259If Exist "%BinDir%\Lib\site-packages\salt\modules\ebuild.py"^
260    del /Q "%BinDir%\Lib\site-packages\salt\modules\ebuild.*" 1>nul
261If Exist "%BinDir%\Lib\site-packages\salt\modules\eix.py"^
262    del /Q "%BinDir%\Lib\site-packages\salt\modules\eix.*" 1>nul
263If Exist "%BinDir%\Lib\site-packages\salt\modules\eselect.py"^
264    del /Q "%BinDir%\Lib\site-packages\salt\modules\eselect.*" 1>nul
265If Exist "%BinDir%\Lib\site-packages\salt\modules\ethtool.py"^
266    del /Q "%BinDir%\Lib\site-packages\salt\modules\ethtool.*" 1>nul
267If Exist "%BinDir%\Lib\site-packages\salt\modules\extfs.py"^
268    del /Q "%BinDir%\Lib\site-packages\salt\modules\extfs.*" 1>nul
269If Exist "%BinDir%\Lib\site-packages\salt\modules\firewalld.py"^
270    del /Q "%BinDir%\Lib\site-packages\salt\modules\firewalld.*" 1>nul
271If Exist "%BinDir%\Lib\site-packages\salt\modules\freebsd*"^
272    del /Q "%BinDir%\Lib\site-packages\salt\modules\freebsd*" 1>nul
273If Exist "%BinDir%\Lib\site-packages\salt\modules\genesis.py"^
274    del /Q "%BinDir%\Lib\site-packages\salt\modules\genesis.*" 1>nul
275If Exist "%BinDir%\Lib\site-packages\salt\modules\gentoo*"^
276    del /Q "%BinDir%\Lib\site-packages\salt\modules\gentoo*" 1>nul
277If Exist "%BinDir%\Lib\site-packages\salt\modules\glusterfs.py"^
278    del /Q "%BinDir%\Lib\site-packages\salt\modules\glusterfs.*" 1>nul
279If Exist "%BinDir%\Lib\site-packages\salt\modules\gnomedesktop.py"^
280    del /Q "%BinDir%\Lib\site-packages\salt\modules\gnomedesktop.*" 1>nul
281If Exist "%BinDir%\Lib\site-packages\salt\modules\groupadd.py"^
282    del /Q "%BinDir%\Lib\site-packages\salt\modules\groupadd.*" 1>nul
283If Exist "%BinDir%\Lib\site-packages\salt\modules\grub_legacy.py"^
284    del /Q "%BinDir%\Lib\site-packages\salt\modules\grub_legacy.*" 1>nul
285If Exist "%BinDir%\Lib\site-packages\salt\modules\guestfs.py"^
286    del /Q "%BinDir%\Lib\site-packages\salt\modules\guestfs.*" 1>nul
287If Exist "%BinDir%\Lib\site-packages\salt\modules\htpasswd.py"^
288    del /Q "%BinDir%\Lib\site-packages\salt\modules\htpasswd.*" 1>nul
289If Exist "%BinDir%\Lib\site-packages\salt\modules\ilo.py"^
290    del /Q "%BinDir%\Lib\site-packages\salt\modules\ilo.*" 1>nul
291If Exist "%BinDir%\Lib\site-packages\salt\modules\img.py"^
292    del /Q "%BinDir%\Lib\site-packages\salt\modules\img.*" 1>nul
293If Exist "%BinDir%\Lib\site-packages\salt\modules\incron.py"^
294    del /Q "%BinDir%\Lib\site-packages\salt\modules\incron.*" 1>nul
295If Exist "%BinDir%\Lib\site-packages\salt\modules\inspector.py"^
296    del /Q "%BinDir%\Lib\site-packages\salt\modules\inspector.*" 1>nul
297If Exist "%BinDir%\Lib\site-packages\salt\modules\ipset.py"^
298    del /Q "%BinDir%\Lib\site-packages\salt\modules\ipset.*" 1>nul
299If Exist "%BinDir%\Lib\site-packages\salt\modules\iptables.py"^
300    del /Q "%BinDir%\Lib\site-packages\salt\modules\iptables.*" 1>nul
301If Exist "%BinDir%\Lib\site-packages\salt\modules\iwtools.py"^
302    del /Q "%BinDir%\Lib\site-packages\salt\modules\iwtools.*" 1>nul
303If Exist "%BinDir%\Lib\site-packages\salt\modules\k8s.py"^
304    del /Q "%BinDir%\Lib\site-packages\salt\modules\k8s.*" 1>nul
305If Exist "%BinDir%\Lib\site-packages\salt\modules\kapacitor.py"^
306    del /Q "%BinDir%\Lib\site-packages\salt\modules\kapacitor.*" 1>nul
307If Exist "%BinDir%\Lib\site-packages\salt\modules\keyboard.py"^
308    del /Q "%BinDir%\Lib\site-packages\salt\modules\keyboard.*" 1>nul
309If Exist "%BinDir%\Lib\site-packages\salt\modules\keystone.py"^
310    del /Q "%BinDir%\Lib\site-packages\salt\modules\keystone.*" 1>nul
311If Exist "%BinDir%\Lib\site-packages\salt\modules\kmod.py"^
312    del /Q "%BinDir%\Lib\site-packages\salt\modules\kmod.*" 1>nul
313If Exist "%BinDir%\Lib\site-packages\salt\modules\layman.py"^
314    del /Q "%BinDir%\Lib\site-packages\salt\modules\layman.*" 1>nul
315If Exist "%BinDir%\Lib\site-packages\salt\modules\linux*"^
316    del /Q "%BinDir%\Lib\site-packages\salt\modules\linux*" 1>nul
317If Exist "%BinDir%\Lib\site-packages\salt\modules\localemod.py"^
318    del /Q "%BinDir%\Lib\site-packages\salt\modules\localemod.*" 1>nul
319If Exist "%BinDir%\Lib\site-packages\salt\modules\locate.py"^
320    del /Q "%BinDir%\Lib\site-packages\salt\modules\locate.*" 1>nul
321If Exist "%BinDir%\Lib\site-packages\salt\modules\logadm.py"^
322    del /Q "%BinDir%\Lib\site-packages\salt\modules\logadm.*" 1>nul
323If Exist "%BinDir%\Lib\site-packages\salt\modules\logrotate.py"^
324    del /Q "%BinDir%\Lib\site-packages\salt\modules\logrotate.*" 1>nul
325If Exist "%BinDir%\Lib\site-packages\salt\modules\lvs.py"^
326    del /Q "%BinDir%\Lib\site-packages\salt\modules\lvs.*" 1>nul
327If Exist "%BinDir%\Lib\site-packages\salt\modules\lxc.py"^
328    del /Q "%BinDir%\Lib\site-packages\salt\modules\lxc.*" 1>nul
329If Exist "%BinDir%\Lib\site-packages\salt\modules\mac*"^
330    del /Q "%BinDir%\Lib\site-packages\salt\modules\mac*" 1>nul
331If Exist "%BinDir%\Lib\site-packages\salt\modules\makeconf.py"^
332    del /Q "%BinDir%\Lib\site-packages\salt\modules\makeconf.*" 1>nul
333If Exist "%BinDir%\Lib\site-packages\salt\modules\mdadm.py"^
334    del /Q "%BinDir%\Lib\site-packages\salt\modules\mdadm.*" 1>nul
335If Exist "%BinDir%\Lib\site-packages\salt\modules\mdata.py"^
336    del /Q "%BinDir%\Lib\site-packages\salt\modules\mdata.*" 1>nul
337If Exist "%BinDir%\Lib\site-packages\salt\modules\monit.py"^
338    del /Q "%BinDir%\Lib\site-packages\salt\modules\monit.*" 1>nul
339If Exist "%BinDir%\Lib\site-packages\salt\modules\moosefs.py"^
340    del /Q "%BinDir%\Lib\site-packages\salt\modules\moosefs.*" 1>nul
341If Exist "%BinDir%\Lib\site-packages\salt\modules\mount.py"^
342    del /Q "%BinDir%\Lib\site-packages\salt\modules\mount.*" 1>nul
343If Exist "%BinDir%\Lib\site-packages\salt\modules\napalm*"^
344    del /Q "%BinDir%\Lib\site-packages\salt\modules\napalm*" 1>nul
345If Exist "%BinDir%\Lib\site-packages\salt\modules\netbsd*"^
346    del /Q "%BinDir%\Lib\site-packages\salt\modules\netbsd*" 1>nul
347If Exist "%BinDir%\Lib\site-packages\salt\modules\netscaler.py"^
348    del /Q "%BinDir%\Lib\site-packages\salt\modules\netscaler.*" 1>nul
349If Exist "%BinDir%\Lib\site-packages\salt\modules\neutron.py"^
350    del /Q "%BinDir%\Lib\site-packages\salt\modules\neutron.*" 1>nul
351If Exist "%BinDir%\Lib\site-packages\salt\modules\nfs3.py"^
352    del /Q "%BinDir%\Lib\site-packages\salt\modules\nfs3.*" 1>nul
353If Exist "%BinDir%\Lib\site-packages\salt\modules\nftables.py"^
354    del /Q "%BinDir%\Lib\site-packages\salt\modules\nftables.*" 1>nul
355If Exist "%BinDir%\Lib\site-packages\salt\modules\nova.py"^
356    del /Q "%BinDir%\Lib\site-packages\salt\modules\nova.*" 1>nul
357If Exist "%BinDir%\Lib\site-packages\salt\modules\nspawn.py"^
358    del /Q "%BinDir%\Lib\site-packages\salt\modules\nspawn.*" 1>nul
359If Exist "%BinDir%\Lib\site-packages\salt\modules\openbsd*"^
360    del /Q "%BinDir%\Lib\site-packages\salt\modules\openbsd*" 1>nul
361If Exist "%BinDir%\Lib\site-packages\salt\modules\openstack_mng.py"^
362    del /Q "%BinDir%\Lib\site-packages\salt\modules\openstack_mng.*" 1>nul
363If Exist "%BinDir%\Lib\site-packages\salt\modules\openvswitch.py"^
364    del /Q "%BinDir%\Lib\site-packages\salt\modules\openvswitch.*" 1>nul
365If Exist "%BinDir%\Lib\site-packages\salt\modules\opkg.py"^
366    del /Q "%BinDir%\Lib\site-packages\salt\modules\opkg.*" 1>nul
367If Exist "%BinDir%\Lib\site-packages\salt\modules\pacman.py"^
368    del /Q "%BinDir%\Lib\site-packages\salt\modules\pacman.*" 1>nul
369If Exist "%BinDir%\Lib\site-packages\salt\modules\parallels.py"^
370    del /Q "%BinDir%\Lib\site-packages\salt\modules\parallels.*" 1>nul
371If Exist "%BinDir%\Lib\site-packages\salt\modules\parted.py"^
372    del /Q "%BinDir%\Lib\site-packages\salt\modules\parted.*" 1>nul
373If Exist "%BinDir%\Lib\site-packages\salt\modules\pcs.py"^
374    del /Q "%BinDir%\Lib\site-packages\salt\modules\pcs.*" 1>nul
375If Exist "%BinDir%\Lib\site-packages\salt\modules\pkgin.py"^
376    del /Q "%BinDir%\Lib\site-packages\salt\modules\pkgin.*" 1>nul
377If Exist "%BinDir%\Lib\site-packages\salt\modules\pkgng.py"^
378    del /Q "%BinDir%\Lib\site-packages\salt\modules\pkgng.*" 1>nul
379If Exist "%BinDir%\Lib\site-packages\salt\modules\pkgutil.py"^
380    del /Q "%BinDir%\Lib\site-packages\salt\modules\pkgutil.*" 1>nul
381If Exist "%BinDir%\Lib\site-packages\salt\modules\portage_config.py"^
382    del /Q "%BinDir%\Lib\site-packages\salt\modules\portage_config.*" 1>nul
383If Exist "%BinDir%\Lib\site-packages\salt\modules\postfix.py"^
384    del /Q "%BinDir%\Lib\site-packages\salt\modules\postfix.*" 1>nul
385If Exist "%BinDir%\Lib\site-packages\salt\modules\poudriere.py"^
386    del /Q "%BinDir%\Lib\site-packages\salt\modules\poudriere.*" 1>nul
387If Exist "%BinDir%\Lib\site-packages\salt\modules\powerpath.py"^
388    del /Q "%BinDir%\Lib\site-packages\salt\modules\powerpath.*" 1>nul
389If Exist "%BinDir%\Lib\site-packages\salt\modules\pw_*"^
390    del /Q "%BinDir%\Lib\site-packages\salt\modules\pw_*" 1>nul
391If Exist "%BinDir%\Lib\site-packages\salt\modules\qemu_ndb.py"^
392    del /Q "%BinDir%\Lib\site-packages\salt\modules\qemu_ndb.*" 1>nul
393If Exist "%BinDir%\Lib\site-packages\salt\modules\quota.py"^
394    del /Q "%BinDir%\Lib\site-packages\salt\modules\quota.*" 1>nul
395If Exist "%BinDir%\Lib\site-packages\salt\modules\redismod.py"^
396    del /Q "%BinDir%\Lib\site-packages\salt\modules\redismod.*" 1>nul
397If Exist "%BinDir%\Lib\site-packages\salt\modules\restartcheck.py"^
398    del /Q "%BinDir%\Lib\site-packages\salt\modules\restartcheck.*" 1>nul
399If Exist "%BinDir%\Lib\site-packages\salt\modules\rh_*"^
400    del /Q "%BinDir%\Lib\site-packages\salt\modules\rh_*" 1>nul
401If Exist "%BinDir%\Lib\site-packages\salt\modules\riak.py"^
402    del /Q "%BinDir%\Lib\site-packages\salt\modules\riak.*" 1>nul
403If Exist "%BinDir%\Lib\site-packages\salt\modules\rpm*"^
404    del /Q "%BinDir%\Lib\site-packages\salt\modules\rpm*" 1>nul
405If Exist "%BinDir%\Lib\site-packages\salt\modules\runit.py"^
406    del /Q "%BinDir%\Lib\site-packages\salt\modules\runit.*" 1>nul
407If Exist "%BinDir%\Lib\site-packages\salt\modules\s6.py"^
408    del /Q "%BinDir%\Lib\site-packages\salt\modules\s6.*" 1>nul
409If Exist "%BinDir%\Lib\site-packages\salt\modules\scsi.py"^
410    del /Q "%BinDir%\Lib\site-packages\salt\modules\scsi.*" 1>nul
411If Exist "%BinDir%\Lib\site-packages\salt\modules\seed.py"^
412    del /Q "%BinDir%\Lib\site-packages\salt\modules\seed.*" 1>nul
413If Exist "%BinDir%\Lib\site-packages\salt\modules\sensors.py"^
414    del /Q "%BinDir%\Lib\site-packages\salt\modules\sensors.*" 1>nul
415If Exist "%BinDir%\Lib\site-packages\salt\modules\service.py"^
416    del /Q "%BinDir%\Lib\site-packages\salt\modules\service.*" 1>nul
417If Exist "%BinDir%\Lib\site-packages\salt\modules\shadow.py"^
418    del /Q "%BinDir%\Lib\site-packages\salt\modules\shadow.*" 1>nul
419If Exist "%BinDir%\Lib\site-packages\salt\modules\smartos*"^
420    del /Q "%BinDir%\Lib\site-packages\salt\modules\smartos*" 1>nul
421If Exist "%BinDir%\Lib\site-packages\salt\modules\smf.py"^
422    del /Q "%BinDir%\Lib\site-packages\salt\modules\smf.*" 1>nul
423If Exist "%BinDir%\Lib\site-packages\salt\modules\snapper.py"^
424    del /Q "%BinDir%\Lib\site-packages\salt\modules\snapper.*" 1>nul
425If Exist "%BinDir%\Lib\site-packages\salt\modules\solaris*"^
426    del /Q "%BinDir%\Lib\site-packages\salt\modules\solaris*" 1>nul
427If Exist "%BinDir%\Lib\site-packages\salt\modules\solr.py"^
428    del /Q "%BinDir%\Lib\site-packages\salt\modules\solr.*" 1>nul
429If Exist "%BinDir%\Lib\site-packages\salt\modules\ssh_*"^
430    del /Q "%BinDir%\Lib\site-packages\salt\modules\ssh_*" 1>nul
431If Exist "%BinDir%\Lib\site-packages\salt\modules\supervisord.py"^
432    del /Q "%BinDir%\Lib\site-packages\salt\modules\supervisord.*" 1>nul
433If Exist "%BinDir%\Lib\site-packages\salt\modules\sysbench.py"^
434    del /Q "%BinDir%\Lib\site-packages\salt\modules\sysbench.*" 1>nul
435If Exist "%BinDir%\Lib\site-packages\salt\modules\sysfs.py"^
436    del /Q "%BinDir%\Lib\site-packages\salt\modules\sysfs.*" 1>nul
437If Exist "%BinDir%\Lib\site-packages\salt\modules\sysrc.py"^
438    del /Q "%BinDir%\Lib\site-packages\salt\modules\sysrc.*" 1>nul
439If Exist "%BinDir%\Lib\site-packages\salt\modules\system.py"^
440    del /Q "%BinDir%\Lib\site-packages\salt\modules\system.*" 1>nul
441If Exist "%BinDir%\Lib\site-packages\salt\modules\test_virtual.py"^
442    del /Q "%BinDir%\Lib\site-packages\salt\modules\test_virtual.*" 1>nul
443If Exist "%BinDir%\Lib\site-packages\salt\modules\timezone.py"^
444    del /Q "%BinDir%\Lib\site-packages\salt\modules\timezone.*" 1>nul
445If Exist "%BinDir%\Lib\site-packages\salt\modules\trafficserver.py"^
446    del /Q "%BinDir%\Lib\site-packages\salt\modules\trafficserver.*" 1>nul
447If Exist "%BinDir%\Lib\site-packages\salt\modules\tuned.py"^
448    del /Q "%BinDir%\Lib\site-packages\salt\modules\tuned.*" 1>nul
449If Exist "%BinDir%\Lib\site-packages\salt\modules\udev.py"^
450    del /Q "%BinDir%\Lib\site-packages\salt\modules\udev.*" 1>nul
451If Exist "%BinDir%\Lib\site-packages\salt\modules\upstart.py"^
452    del /Q "%BinDir%\Lib\site-packages\salt\modules\upstart.*" 1>nul
453If Exist "%BinDir%\Lib\site-packages\salt\modules\useradd.py"^
454    del /Q "%BinDir%\Lib\site-packages\salt\modules\useradd.*" 1>nul
455If Exist "%BinDir%\Lib\site-packages\salt\modules\uswgi.py"^
456    del /Q "%BinDir%\Lib\site-packages\salt\modules\uswgi.*" 1>nul
457If Exist "%BinDir%\Lib\site-packages\salt\modules\varnish.py"^
458    del /Q "%BinDir%\Lib\site-packages\salt\modules\varnish.*" 1>nul
459If Exist "%BinDir%\Lib\site-packages\salt\modules\vbox_guest.py"^
460    del /Q "%BinDir%\Lib\site-packages\salt\modules\vbox_guest.*" 1>nul
461If Exist "%BinDir%\Lib\site-packages\salt\modules\vboxmanage.py"^
462    del /Q "%BinDir%\Lib\site-packages\salt\modules\vboxmanage.*" 1>nul
463If Exist "%BinDir%\Lib\site-packages\salt\modules\virt.py"^
464    del /Q "%BinDir%\Lib\site-packages\salt\modules\virt.*" 1>nul
465If Exist "%BinDir%\Lib\site-packages\salt\modules\xapi.py"^
466    del /Q "%BinDir%\Lib\site-packages\salt\modules\xapi.*" 1>nul
467If Exist "%BinDir%\Lib\site-packages\salt\modules\xbpspkg.py"^
468    del /Q "%BinDir%\Lib\site-packages\salt\modules\xbpspkg.*" 1>nul
469If Exist "%BinDir%\Lib\site-packages\salt\modules\xfs.py"^
470    del /Q "%BinDir%\Lib\site-packages\salt\modules\xfs.*" 1>nul
471If Exist "%BinDir%\Lib\site-packages\salt\modules\yumpkg.py"^
472    del /Q "%BinDir%\Lib\site-packages\salt\modules\yum.*" 1>nul
473If Exist "%BinDir%\Lib\site-packages\salt\modules\zfs.py"^
474    del /Q "%BinDir%\Lib\site-packages\salt\modules\zfs.*" 1>nul
475If Exist "%BinDir%\Lib\site-packages\salt\modules\znc.py"^
476    del /Q "%BinDir%\Lib\site-packages\salt\modules\znc.*" 1>nul
477If Exist "%BinDir%\Lib\site-packages\salt\modules\zpool.py"^
478    del /Q "%BinDir%\Lib\site-packages\salt\modules\zpool.*" 1>nul
479If Exist "%BinDir%\Lib\site-packages\salt\modules\zypper.py"^
480    del /Q "%BinDir%\Lib\site-packages\salt\modules\zypper.*" 1>nul
481
482:: Delete Non-Windows States
483If Exist "%BinDir%\Lib\site-packages\salt\states\acme.py"^
484    del /Q "%BinDir%\Lib\site-packages\salt\states\acme.*" 1>nul
485If Exist "%BinDir%\Lib\site-packages\salt\states\alternatives.py"^
486    del /Q "%BinDir%\Lib\site-packages\salt\states\alternatives.*" 1>nul
487If Exist "%BinDir%\Lib\site-packages\salt\states\aptpkg.py"^
488    del /Q "%BinDir%\Lib\site-packages\salt\states\aptpkg.*" 1>nul
489If Exist "%BinDir%\Lib\site-packages\salt\states\at.py"^
490    del /Q "%BinDir%\Lib\site-packages\salt\states\at.*" 1>nul
491If Exist "%BinDir%\Lib\site-packages\salt\states\blockdev.py"^
492    del /Q "%BinDir%\Lib\site-packages\salt\states\blockdev.*" 1>nul
493If Exist "%BinDir%\Lib\site-packages\salt\states\ceph.py"^
494    del /Q "%BinDir%\Lib\site-packages\salt\states\ceph.*" 1>nul
495If Exist "%BinDir%\Lib\site-packages\salt\states\cron.py"^
496    del /Q "%BinDir%\Lib\site-packages\salt\states\cron.*" 1>nul
497If Exist "%BinDir%\Lib\site-packages\salt\states\csf.py"^
498    del /Q "%BinDir%\Lib\site-packages\salt\states\csf.*" 1>nul
499If Exist "%BinDir%\Lib\site-packages\salt\states\debconfmod.py"^
500    del /Q "%BinDir%\Lib\site-packages\salt\states\debconfmod.*" 1>nul
501If Exist "%BinDir%\Lib\site-packages\salt\states\eselect.py"^
502    del /Q "%BinDir%\Lib\site-packages\salt\states\eselect.*" 1>nul
503If Exist "%BinDir%\Lib\site-packages\salt\states\ethtool.py"^
504    del /Q "%BinDir%\Lib\site-packages\salt\states\ethtool.*" 1>nul
505If Exist "%BinDir%\Lib\site-packages\salt\states\firewalld.py"^
506    del /Q "%BinDir%\Lib\site-packages\salt\states\firewalld.*" 1>nul
507If Exist "%BinDir%\Lib\site-packages\salt\states\glusterfs.py"^
508    del /Q "%BinDir%\Lib\site-packages\salt\states\glusterfs.*" 1>nul
509If Exist "%BinDir%\Lib\site-packages\salt\states\gnomedesktop.py"^
510    del /Q "%BinDir%\Lib\site-packages\salt\states\gnomedesktop.*" 1>nul
511If Exist "%BinDir%\Lib\site-packages\salt\states\htpasswd.py"^
512    del /Q "%BinDir%\Lib\site-packages\salt\states\htpasswd.*" 1>nul
513If Exist "%BinDir%\Lib\site-packages\salt\states\incron.py"^
514    del /Q "%BinDir%\Lib\site-packages\salt\states\incron.*" 1>nul
515If Exist "%BinDir%\Lib\site-packages\salt\states\ipset.py"^
516    del /Q "%BinDir%\Lib\site-packages\salt\states\ipset.*" 1>nul
517If Exist "%BinDir%\Lib\site-packages\salt\states\iptables.py"^
518    del /Q "%BinDir%\Lib\site-packages\salt\states\iptables.*" 1>nul
519If Exist "%BinDir%\Lib\site-packages\salt\states\k8s.py"^
520    del /Q "%BinDir%\Lib\site-packages\salt\states\k8s.*" 1>nul
521If Exist "%BinDir%\Lib\site-packages\salt\states\kapacitor.py"^
522    del /Q "%BinDir%\Lib\site-packages\salt\states\kapacitor.*" 1>nul
523If Exist "%BinDir%\Lib\site-packages\salt\states\keyboard.py"^
524    del /Q "%BinDir%\Lib\site-packages\salt\states\keyboard.*" 1>nul
525If Exist "%BinDir%\Lib\site-packages\salt\states\keystone.py"^
526    del /Q "%BinDir%\Lib\site-packages\salt\states\keystone.*" 1>nul
527If Exist "%BinDir%\Lib\site-packages\salt\states\kmod.py"^
528    del /Q "%BinDir%\Lib\site-packages\salt\states\kmod.*" 1>nul
529If Exist "%BinDir%\Lib\site-packages\salt\states\layman.py"^
530    del /Q "%BinDir%\Lib\site-packages\salt\states\layman.*" 1>nul
531If Exist "%BinDir%\Lib\site-packages\salt\states\linux*"^
532    del /Q "%BinDir%\Lib\site-packages\salt\states\linux*" 1>nul
533If Exist "%BinDir%\Lib\site-packages\salt\states\lxc.py"^
534    del /Q "%BinDir%\Lib\site-packages\salt\states\lxc.*" 1>nul
535If Exist "%BinDir%\Lib\site-packages\salt\states\mac_*"^
536    del /Q "%BinDir%\Lib\site-packages\salt\states\mac_*" 1>nul
537If Exist "%BinDir%\Lib\site-packages\salt\states\makeconf.py"^
538    del /Q "%BinDir%\Lib\site-packages\salt\states\makeconf.*" 1>nul
539If Exist "%BinDir%\Lib\site-packages\salt\states\mdadm.py"^
540    del /Q "%BinDir%\Lib\site-packages\salt\states\mdadm.*" 1>nul
541If Exist "%BinDir%\Lib\site-packages\salt\states\monit.py"^
542    del /Q "%BinDir%\Lib\site-packages\salt\states\monit.*" 1>nul
543If Exist "%BinDir%\Lib\site-packages\salt\states\mount.py"^
544    del /Q "%BinDir%\Lib\site-packages\salt\states\mount.*" 1>nul
545If Exist "%BinDir%\Lib\site-packages\salt\states\nftables.py"^
546    del /Q "%BinDir%\Lib\site-packages\salt\states\nftables.*" 1>nul
547If Exist "%BinDir%\Lib\site-packages\salt\states\pcs.py"^
548    del /Q "%BinDir%\Lib\site-packages\salt\states\pcs.*" 1>nul
549If Exist "%BinDir%\Lib\site-packages\salt\states\pkgng.py"^
550    del /Q "%BinDir%\Lib\site-packages\salt\states\pkgng.*" 1>nul
551If Exist "%BinDir%\Lib\site-packages\salt\states\portage_config.py"^
552    del /Q "%BinDir%\Lib\site-packages\salt\states\portage_config.*" 1>nul
553If Exist "%BinDir%\Lib\site-packages\salt\states\powerpath.py"^
554    del /Q "%BinDir%\Lib\site-packages\salt\states\powerpath.*" 1>nul
555If Exist "%BinDir%\Lib\site-packages\salt\states\quota.py"^
556    del /Q "%BinDir%\Lib\site-packages\salt\states\quota.*" 1>nul
557If Exist "%BinDir%\Lib\site-packages\salt\states\redismod.py"^
558    del /Q "%BinDir%\Lib\site-packages\salt\states\redismod.*" 1>nul
559If Exist "%BinDir%\Lib\site-packages\salt\states\smartos.py"^
560    del /Q "%BinDir%\Lib\site-packages\salt\states\smartos.*" 1>nul
561If Exist "%BinDir%\Lib\site-packages\salt\states\snapper.py"^
562    del /Q "%BinDir%\Lib\site-packages\salt\states\snapper.*" 1>nul
563If Exist "%BinDir%\Lib\site-packages\salt\states\ssh_*"^
564    del /Q "%BinDir%\Lib\site-packages\salt\states\ssh_*" 1>nul
565If Exist "%BinDir%\Lib\site-packages\salt\states\supervisord.py"^
566    del /Q "%BinDir%\Lib\site-packages\salt\states\supervisord.*" 1>nul
567If Exist "%BinDir%\Lib\site-packages\salt\states\sysrc.py"^
568    del /Q "%BinDir%\Lib\site-packages\salt\states\sysrc.*" 1>nul
569If Exist "%BinDir%\Lib\site-packages\salt\states\trafficserver.py"^
570    del /Q "%BinDir%\Lib\site-packages\salt\states\trafficserver.*" 1>nul
571If Exist "%BinDir%\Lib\site-packages\salt\states\tuned.py"^
572    del /Q "%BinDir%\Lib\site-packages\salt\states\tuned.*" 1>nul
573If Exist "%BinDir%\Lib\site-packages\salt\states\vbox_guest.py"^
574    del /Q "%BinDir%\Lib\site-packages\salt\states\vbox_guest.*" 1>nul
575If Exist "%BinDir%\Lib\site-packages\salt\states\virt.py"^
576    del /Q "%BinDir%\Lib\site-packages\salt\states\virt.*" 1>nul
577If Exist "%BinDir%\Lib\site-packages\salt\states\zfs.py"^
578    del /Q "%BinDir%\Lib\site-packages\salt\states\zfs.*" 1>nul
579If Exist "%BinDir%\Lib\site-packages\salt\states\zpool.py"^
580    del /Q "%BinDir%\Lib\site-packages\salt\states\zpool.*" 1>nul
581
582:: Remove Unneeded Components
583If Exist "%BinDir%\Lib\site-packages\salt\cloud"^
584    rd /S /Q "%BinDir%\Lib\site-packages\salt\cloud" 1>nul
585If Exist "%BinDir%\Scripts\salt-unity*"^
586    del /Q "%BinDir%\Scripts\salt-unity*" 1>nul
587
588@echo.
589
590@echo Building the installer...
591@echo ----------------------------------------------------------------------
592:: Make the Master installer if the nullsoft script exists
593If Exist "%InsDir%\Salt-Setup.nsi"^
594    makensis.exe /DSaltVersion=%Version% /DPythonVersion=%Python% "%InsDir%\Salt-Setup.nsi"
595
596:: Remove files not needed for Salt Minion
597:: salt
598:: salt has to be removed individually (can't wildcard it)
599If Exist "%BinDir%\Scripts\salt"^
600    del /Q "%BinDir%\Scripts\salt" 1>nul
601If Exist "%BinDir%\Scripts\salt.exe"^
602    del /Q "%BinDir%\Scripts\salt.exe" 1>nul
603If Exist "%BldDir%\salt.bat"^
604    del /Q "%BldDir%\salt.bat" 1>nul
605:: salt-key
606If Exist "%BinDir%\Scripts\salt-key*"^
607    del /Q "%BinDir%\Scripts\salt-key*" 1>nul
608If Exist "%BldDir%\salt-key.bat"^
609    del /Q "%BldDir%\salt-key.bat" 1>nul
610:: salt-master
611If Exist "%BinDir%\Scripts\salt-master*"^
612    del /Q "%BinDir%\Scripts\salt-master*" 1>nul
613If Exist "%BldDir%\salt-master.bat"^
614    del /Q "%BldDir%\salt-master.bat" 1>nul
615:: salt-run
616If Exist "%BinDir%\Scripts\salt-run*"^
617    del /Q "%BinDir%\Scripts\salt-run*" 1>nul
618If Exist "%BldDir%\salt-run.bat"^
619    del /Q "%BldDir%\salt-run.bat" 1>nul
620
621:: Remove the master config file
622if Exist "%CnfDir%\master"^
623    del /Q "%CnfDir%\master" 1>nul
624
625:: Make the Salt Minion Installer
626makensis.exe /DSaltVersion=%Version% /DPythonVersion=%Python% "%InsDir%\Salt-Minion-Setup.nsi"
627@echo.
628
629@echo.
630@echo ======================================================================
631@echo Script completed...
632@echo ======================================================================
633@echo Installation file can be found in the following directory:
634@echo %InsDir%
635
636:done
637if [%Version%] == [] pause
638