276
276
def NSIS_Installer():
278
if env['OURPLATFORM'] != 'win32-vc' and env['OURPLATFORM'] != 'win32-mingw':
279
print "NSIS installer is only available on Windows."
282
install_base_dir = os.getcwd() + "\\"
286
version = v.read()[:-1]
287
shortver = version.split('.')[0] + version.split('.')[1]
290
#### change to suit install dir ####
291
inst_dir = install_base_dir + env['BF_INSTALLDIR']
293
os.chdir("windows/installer")
295
ns = open("00.sconsblender.nsi","r")
297
ns_cnt = str(ns.read())
302
rootdir = os.listdir(inst_dir+"\\")
303
for rootitem in rootdir:
304
if os.path.isdir(inst_dir+"\\"+ rootitem) == 0:
305
rootlist.append("File " + inst_dir + "\\" + rootitem)
306
rootstring = string.join(rootlist, "\n ")
308
ns_cnt = string.replace(ns_cnt, "[ROOTDIRCONTS]", rootstring)
312
for rootitem in rootdir:
313
if os.path.isdir(inst_dir + rootitem) == 0:
314
delrootlist.append("Delete $INSTDIR\\" + rootitem)
315
delrootstring = string.join(delrootlist, "\n ")
316
delrootstring += "\n"
317
ns_cnt = string.replace(ns_cnt, "[DELROOTDIRCONTS]", delrootstring)
321
scriptpath = "%s%s" % (inst_dir, "\\.blender\\scripts")
322
scriptdir = os.listdir(scriptpath)
323
for scriptitem in scriptdir:
324
scriptfile = "%s\\%s" % (scriptpath, scriptitem)
325
if os.path.isdir(scriptfile) == 0:
326
scriptlist.append("File %s" % scriptfile)
327
scriptstring = string.join(scriptlist, "\n ")
328
scriptstring += "\n\n"
329
ns_cnt = string.replace(ns_cnt, "[SCRIPTCONTS]", scriptstring)
331
# do scripts\bpymodules
333
bpymodpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpymodules")
334
bpymoddir = os.listdir(bpymodpath)
336
for bpymoditem in bpymoddir:
337
bpymodfile = "%s\\%s" % (bpymodpath, bpymoditem)
338
if os.path.isdir(bpymodfile) == 0:
339
bpymodlist.append("File %s" % bpymodfile)
340
bpymodstring = string.join(bpymodlist, "\n ")
341
bpymodstring += "\n\n"
342
ns_cnt = string.replace(ns_cnt, "[SCRIPTMODCONTS]", bpymodstring)
344
# do scripts\bpymodules\colladaimex
346
bpymodpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpymodules\\ColladaImEx")
347
bpymoddir = os.listdir(bpymodpath)
349
for bpymoditem in bpymoddir:
350
bpymodfile = "%s\\%s" % (bpymodpath, bpymoditem)
351
if os.path.isdir(bpymodfile) == 0:
352
colladalist.append("File %s" % bpymodfile)
353
bpymodstring = string.join(colladalist, "\n ")
354
bpymodstring += "\n\n"
355
ns_cnt = string.replace(ns_cnt, "[SCRIPTMODCOLLADACONT]", bpymodstring)
359
bpydatapath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpydata")
360
bpydatadir = os.listdir(bpydatapath)
361
for bpydataitem in bpydatadir:
362
bpydatafile = "%s\\%s" % (bpydatapath, bpydataitem)
363
if os.path.isdir(bpydatafile) == 0:
364
bpydatalist.append("File %s" % bpydatafile)
365
bpydatastring = string.join(bpydatalist, "\n ")
366
bpydatastring += "\n\n"
367
ns_cnt = string.replace(ns_cnt, "[SCRIPTDATACONTS]", bpydatastring)
371
plugincludepath = "%s%s" % (inst_dir, "\\plugins\\include")
372
plugincludedir = os.listdir(plugincludepath)
373
for plugincludeitem in plugincludedir:
374
plugincludefile = "%s\\%s" % (plugincludepath, plugincludeitem)
375
if os.path.isdir(plugincludefile) == 0:
376
if plugincludefile.find('.h') or plugincludefile.find('.DEF'):
377
plugincludelist.append("File %s" % plugincludefile)
378
plugincludestring = string.join(plugincludelist, "\n ")
379
plugincludestring += "\n\n"
380
ns_cnt = string.replace(ns_cnt, "[PLUGINCONTS]", plugincludestring)
382
# do scripts\bpydata\config
384
cfgpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpydata\\config")
385
cfgdir = os.listdir(cfgpath)
386
for cfgitem in cfgdir:
387
cfgfile = "%s\\%s" % (cfgpath, cfgitem)
388
if os.path.isdir(cfgfile) == 0:
389
cfglist.append("File %s" % cfgfile)
390
cfgstring = string.join(cfglist, "\n ")
392
ns_cnt = string.replace(ns_cnt, "[SCRIPTDATACFGCONTS]", cfgstring)
396
dotblenddir = os.listdir(inst_dir+"\\.blender")
397
for dotblenditem in dotblenddir:
398
if os.path.isdir(inst_dir + "\\.blender\\" + dotblenditem) == 0:
399
dotblendlist.append("File " + inst_dir + "\\.blender\\" + dotblenditem)
400
dotblendstring = string.join(dotblendlist, "\n ")
401
dotblendstring += "\n\n"
402
ns_cnt = string.replace(ns_cnt, "[DOTBLENDERCONTS]", dotblendstring)
407
langdir = os.listdir(inst_dir + "\\.blender\\locale")
408
for langitem in langdir:
409
if os.path.isdir(inst_dir + "\\.blender\\locale\\" + langitem) == 1:
410
langfiles.append("SetOutPath $BLENDERHOME\\.blender\\locale\\" + langitem + "\\LC_MESSAGES")
411
langfiles.append("File " + inst_dir + "\\.blender\\locale\\" + langitem + "\\LC_MESSAGES\\blender.mo")
412
langstring = string.join(langfiles, "\n ")
414
ns_cnt = string.replace(ns_cnt, "[LANGUAGECONTS]", langstring)
417
ns_cnt = string.replace(ns_cnt, "DISTDIR", inst_dir+"\\")
418
ns_cnt = string.replace(ns_cnt, "SHORTVER", shortver)
419
ns_cnt = string.replace(ns_cnt, "VERSION", version)
421
new_nsis = open("00.blender_tmp.nsi", 'w')
422
new_nsis.write(ns_cnt)
425
sys.stdout = os.popen("makensis 00.blender_tmp.nsi", 'w')
278
if env['OURPLATFORM'] != 'win32-vc' and env['OURPLATFORM'] != 'win32-mingw':
279
print "NSIS installer is only available on Windows."
282
install_base_dir = os.getcwd() + "\\"
286
version = v.read()[:-1]
287
shortver = version.split('.')[0] + version.split('.')[1]
290
#### change to suit install dir ####
291
inst_dir = install_base_dir + env['BF_INSTALLDIR']
293
os.chdir("windows/installer")
295
ns = open("00.sconsblender.nsi","r")
297
ns_cnt = str(ns.read())
302
rootdir = os.listdir(inst_dir+"\\")
303
for rootitem in rootdir:
304
if os.path.isdir(inst_dir+"\\"+ rootitem) == 0:
305
rootlist.append("File " + inst_dir + "\\" + rootitem)
306
rootstring = string.join(rootlist, "\n ")
308
ns_cnt = string.replace(ns_cnt, "[ROOTDIRCONTS]", rootstring)
312
for rootitem in rootdir:
313
if os.path.isdir(inst_dir + rootitem) == 0:
314
delrootlist.append("Delete $INSTDIR\\" + rootitem)
315
delrootstring = string.join(delrootlist, "\n ")
316
delrootstring += "\n"
317
ns_cnt = string.replace(ns_cnt, "[DELROOTDIRCONTS]", delrootstring)
321
scriptpath = "%s%s" % (inst_dir, "\\.blender\\scripts")
322
scriptdir = os.listdir(scriptpath)
323
for scriptitem in scriptdir:
324
scriptfile = "%s\\%s" % (scriptpath, scriptitem)
325
if os.path.isdir(scriptfile) == 0:
326
scriptlist.append("File %s" % scriptfile)
327
scriptstring = string.join(scriptlist, "\n ")
328
scriptstring += "\n\n"
329
ns_cnt = string.replace(ns_cnt, "[SCRIPTCONTS]", scriptstring)
331
# do scripts\bpymodules
333
bpymodpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpymodules")
334
bpymoddir = os.listdir(bpymodpath)
336
for bpymoditem in bpymoddir:
337
bpymodfile = "%s\\%s" % (bpymodpath, bpymoditem)
338
if os.path.isdir(bpymodfile) == 0:
339
bpymodlist.append("File %s" % bpymodfile)
340
bpymodstring = string.join(bpymodlist, "\n ")
341
bpymodstring += "\n\n"
342
ns_cnt = string.replace(ns_cnt, "[SCRIPTMODCONTS]", bpymodstring)
344
# do scripts\bpymodules\colladaimex
346
bpymodpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpymodules\\ColladaImEx")
347
bpymoddir = os.listdir(bpymodpath)
349
for bpymoditem in bpymoddir:
350
bpymodfile = "%s\\%s" % (bpymodpath, bpymoditem)
351
if os.path.isdir(bpymodfile) == 0:
352
colladalist.append("File %s" % bpymodfile)
353
bpymodstring = string.join(colladalist, "\n ")
354
bpymodstring += "\n\n"
355
ns_cnt = string.replace(ns_cnt, "[SCRIPTMODCOLLADACONT]", bpymodstring)
359
bpydatapath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpydata")
360
bpydatadir = os.listdir(bpydatapath)
361
for bpydataitem in bpydatadir:
362
bpydatafile = "%s\\%s" % (bpydatapath, bpydataitem)
363
if os.path.isdir(bpydatafile) == 0:
364
bpydatalist.append("File %s" % bpydatafile)
365
bpydatastring = string.join(bpydatalist, "\n ")
366
bpydatastring += "\n\n"
367
ns_cnt = string.replace(ns_cnt, "[SCRIPTDATACONTS]", bpydatastring)
371
plugincludepath = "%s%s" % (inst_dir, "\\plugins\\include")
372
plugincludedir = os.listdir(plugincludepath)
373
for plugincludeitem in plugincludedir:
374
plugincludefile = "%s\\%s" % (plugincludepath, plugincludeitem)
375
if os.path.isdir(plugincludefile) == 0:
376
if plugincludefile.find('.h') or plugincludefile.find('.DEF'):
377
plugincludelist.append("File %s" % plugincludefile)
378
plugincludestring = string.join(plugincludelist, "\n ")
379
plugincludestring += "\n\n"
380
ns_cnt = string.replace(ns_cnt, "[PLUGINCONTS]", plugincludestring)
382
# do scripts\bpydata\config
384
cfgpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpydata\\config")
385
cfgdir = os.listdir(cfgpath)
386
for cfgitem in cfgdir:
387
cfgfile = "%s\\%s" % (cfgpath, cfgitem)
388
if os.path.isdir(cfgfile) == 0:
389
cfglist.append("File %s" % cfgfile)
390
cfgstring = string.join(cfglist, "\n ")
392
ns_cnt = string.replace(ns_cnt, "[SCRIPTDATACFGCONTS]", cfgstring)
396
dotblenddir = os.listdir(inst_dir+"\\.blender")
397
for dotblenditem in dotblenddir:
398
if os.path.isdir(inst_dir + "\\.blender\\" + dotblenditem) == 0:
399
dotblendlist.append("File " + inst_dir + "\\.blender\\" + dotblenditem)
400
dotblendstring = string.join(dotblendlist, "\n ")
401
dotblendstring += "\n\n"
402
ns_cnt = string.replace(ns_cnt, "[DOTBLENDERCONTS]", dotblendstring)
407
langdir = os.listdir(inst_dir + "\\.blender\\locale")
408
for langitem in langdir:
409
if os.path.isdir(inst_dir + "\\.blender\\locale\\" + langitem) == 1:
410
langfiles.append("SetOutPath $BLENDERHOME\\.blender\\locale\\" + langitem + "\\LC_MESSAGES")
411
langfiles.append("File " + inst_dir + "\\.blender\\locale\\" + langitem + "\\LC_MESSAGES\\blender.mo")
412
langstring = string.join(langfiles, "\n ")
414
ns_cnt = string.replace(ns_cnt, "[LANGUAGECONTS]", langstring)
417
ns_cnt = string.replace(ns_cnt, "DISTDIR", inst_dir+"\\")
418
ns_cnt = string.replace(ns_cnt, "SHORTVER", shortver)
419
ns_cnt = string.replace(ns_cnt, "VERSION", version)
421
new_nsis = open("00.blender_tmp.nsi", 'w')
422
new_nsis.write(ns_cnt)
425
sys.stdout = os.popen("makensis 00.blender_tmp.nsi", 'w')
427
427
nsis_build = None
428
428
if 'nsis' in B.targets: