3
# this file has the NSIS related functions
12
def donsis(env, target, source):
14
Create a Windows installer with NSIS
17
print "Creating the Windows installer"
20
startdir = os.getcwd()
22
if bs_dirs.preparedist()==0:
23
print "check output for error"
26
os.chdir("release/windows/installer")
28
nsis = open("00.sconsblender.nsi", 'r')
29
nsis_cnt = str(nsis.read())
34
rootdir = os.listdir(startdir + "\\dist")
35
for rootitem in rootdir:
36
if os.path.isdir(startdir + "\\dist\\" + rootitem) == 0:
37
rootlist.append("File " + startdir + "\\dist\\" + rootitem)
38
rootstring = string.join(rootlist, "\n ")
40
nsis_cnt = string.replace(nsis_cnt, "[ROOTDIRCONTS]", rootstring)
44
for rootitem in rootdir:
45
if os.path.isdir(startdir + "\\dist\\" + rootitem) == 0:
46
delrootlist.append("Delete $INSTDIR\\" + rootitem)
47
delrootstring = string.join(delrootlist, "\n ")
49
nsis_cnt = string.replace(nsis_cnt, "[DELROOTDIRCONTS]", delrootstring)
53
scriptpath = "%s%s" % (startdir, "\\dist\\.blender\\scripts")
54
scriptdir = os.listdir(scriptpath)
55
for scriptitem in scriptdir:
56
scriptfile = "%s\\%s" % (scriptpath, scriptitem)
57
if os.path.isdir(scriptfile) == 0:
58
scriptlist.append("File %s" % scriptfile)
59
scriptstring = string.join(scriptlist, "\n ")
60
scriptstring += "\n\n"
61
nsis_cnt = string.replace(nsis_cnt, "[SCRIPTCONTS]", scriptstring)
63
# do scripts\bpymodules
65
bpymodpath = "%s%s" % (startdir, "\\dist\\.blender\\scripts\\bpymodules")
66
bpymoddir = os.listdir(bpymodpath)
67
for bpymoditem in bpymoddir:
68
bpymodfile = "%s\\%s" % (bpymodpath, bpymoditem)
69
if os.path.isdir(bpymodfile) == 0:
70
bpymodlist.append("File %s" % bpymodfile)
71
bpymodstring = string.join(bpymodlist, "\n ")
72
bpymodstring += "\n\n"
73
nsis_cnt = string.replace(nsis_cnt, "[SCRIPTMODCONTS]", bpymodstring)
77
bpydatapath = "%s%s" % (startdir, "\\dist\\.blender\\scripts\\bpydata")
78
bpydatadir = os.listdir(bpydatapath)
79
for bpydataitem in bpydatadir:
80
bpydatafile = "%s\\%s" % (bpydatapath, bpydataitem)
81
if os.path.isdir(bpydatafile) == 0:
82
bpydatalist.append("File %s" % bpydatafile)
83
bpydatastring = string.join(bpydatalist, "\n ")
84
bpydatastring += "\n\n"
85
nsis_cnt = string.replace(nsis_cnt, "[SCRIPTDATACONTS]", bpydatastring)
87
# do scripts\bpydata\config
89
cfgpath = "%s%s" % (startdir, "\\dist\\.blender\\scripts\\bpydata\\config")
90
cfgdir = os.listdir(cfgpath)
91
for cfgitem in cfgdir:
92
cfgfile = "%s\\%s" % (cfgpath, cfgitem)
93
if os.path.isdir(cfgfile) == 0:
94
cfglist.append("File %s" % cfgfile)
95
cfgstring = string.join(cfglist, "\n ")
97
nsis_cnt = string.replace(nsis_cnt, "[SCRIPTDATACFGCONTS]", cfgstring)
101
plugincludepath = "%s%s" % (startdir, "\\dist\\plugins\\include")
102
plugincludedir = os.listdir(plugincludepath)
103
for plugincludeitem in plugincludedir:
104
plugincludefile = "%s\\%s" % (plugincludepath, plugincludeitem)
105
if os.path.isdir(plugincludefile) == 0:
106
plugincludelist.append("File %s" % plugincludefile)
107
plugincludestring = string.join(plugincludelist, "\n ")
108
plugincludestring += "\n\n"
109
nsis_cnt = string.replace(nsis_cnt, "[PLUGINCONTS]", plugincludestring)
113
dotblenddir = os.listdir(startdir+"\\dist\\.blender")
114
for dotblenditem in dotblenddir:
115
if os.path.isdir(startdir + "\\dist\\.blender\\" + dotblenditem) == 0:
116
dotblendlist.append("File " + startdir + "\\dist\\.blender\\" + dotblenditem)
117
dotblendstring = string.join(dotblendlist, "\n ")
118
dotblendstring += "\n\n"
119
nsis_cnt = string.replace(nsis_cnt, "[DOTBLENDERCONTS]", dotblendstring)
124
langdir = os.listdir(startdir + "\\dist\\.blender\\locale")
125
for langitem in langdir:
126
if os.path.isdir(startdir + "\\dist\\.blender\\locale\\" + langitem) == 1:
127
langfiles.append("SetOutPath $BLENDERHOME\\.blender\\locale\\" + langitem + "\\LC_MESSAGES")
128
langfiles.append("File " + startdir + "\\dist\\.blender\\locale\\" + langitem + "\\LC_MESSAGES\\blender.mo")
129
langstring = string.join(langfiles, "\n ")
131
nsis_cnt = string.replace(nsis_cnt, "[LANGUAGECONTS]", langstring)
134
nsis_cnt = string.replace(nsis_cnt, "DISTDIR", startdir + "\\dist")
135
nsis_cnt = string.replace(nsis_cnt, "SHORTVER", bs_globals.shortversion)
136
nsis_cnt = string.replace(nsis_cnt, "VERSION", bs_globals.version)
138
new_nsis = open("00.blender_tmp.nsi", 'w')
139
new_nsis.write(nsis_cnt)
142
sys.stdout = os.popen("makensis 00.blender_tmp.nsi", 'w')
146
def BlenderNSIS(target):
148
Entry for creating Windows installer
150
if sys.platform == 'win32':
151
inst_env = bs_globals.init_env.Copy()
152
nsis_inst = inst_env.Command('nsisinstaller', 'blender$PROGSUFFIX', donsis)
153
if bs_globals.user_options_dict['BUILD_BLENDER_PLAYER'] == 1:
154
inst_env.Depends(nsis_inst, 'blenderplayer$PROGSUFFIX')
155
inst_env.Alias("wininst", nsis_inst)