qiushang 1 年間 前
コミット
a28d6c01f2
7 ファイル変更137 行追加58 行削除
  1. 12 2
      .electron-vue/build.config.js
  2. 94 38
      nsis/build.js
  3. 1 1
      nsis/skin/uninstallpage.xml
  4. 11 2
      nsis/test.nsh
  5. 9 9
      nsis/test.nsi
  6. 1 1
      nsis/test.tmp
  7. 9 5
      package.json

+ 12 - 2
.electron-vue/build.config.js

@@ -1,13 +1,23 @@
 const path = require('path')
 const dependencies = require('../package.json')
 
+let arch = "";
+let unpack = []
+if(process.env.arch == 'x64'){
+  arch = "x64";
+  unpack = "**/bin/x64/**";
+}else{
+  arch = "ia32";
+  unpack = "**/bin/ia32/**";
+}
+
 /**
  * `electron-packager` options
  * https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-electron-packager.html
  */
 module.exports = {
-  arch: 'ia32',
-  asar: { unpack: "**/bin/**"},
+  arch: arch,
+  asar: { unpack: unpack },
   dir: path.join(__dirname, '../'),
   icon: path.join(__dirname, '../build/icons/icon'),
   ignore: /(^\/(src|test|\.[a-z]+|README|yarn|static|dist\/web))|\.gitkeep/,

+ 94 - 38
nsis/build.js

@@ -7,13 +7,10 @@ const spawnExec = require("./spawnExec.js");
 let content = fs.readFileSync("./package.json");
 content = content.toString();
 let packageInfo = JSON.parse(content);
-const axios = require('axios');
-const FormData = require('form-data');
 
 let path7z = __dirname+"/7z/7z.exe";
 let pathNsis = __dirname+"/NSIS/makensis.exe";
-let pathUninstallExe = __dirname +"/../build/"+packageInfo.name+"_XY.exe";
-
+let pathUninstallExe = "";
 
 (async () => {
 	logStats(path7z,'开始压缩资源目录!');
@@ -28,79 +25,138 @@ let pathUninstallExe = __dirname +"/../build/"+packageInfo.name+"_XY.exe";
 		console.log(chalk.red.bold("err - 资源目录压缩失败!"),err);
 		return false;
 	});
+	
+	// 修改卸载推广的网址 
+	let uninstallPath = "./nsis/uninstallpage.xml.tmp";
+	let uninstallOutPath = "./nsis/skin/uninstallpage.xml";
+	let uninstallContent = fs.readFileSync(uninstallPath);
+	uninstallContent = uninstallContent.toString();
+	uninstallContent = uninstallContent.replace(/\<\#uninstallUrl\#\>/g, packageInfo.softInfo.downloadPrefix + '/' + packageInfo.name + '/uninstallWeb/');
+	fs.writeFileSync(uninstallOutPath,uninstallContent);
+	
+	// 写入version
+	let versionOutPath = "./build/version.json";
+	let verisonContent = JSON.stringify({"v":packageInfo.version, "c":packageInfo.softInfo.upgradeLog});
+	fs.writeFileSync(versionOutPath, verisonContent);
+
 	// 读取配置文件
 	let nsiPath = "./nsis/test.tmp";
 	let nsiOutPath = "./nsis/test.nsi";
 	let nsiContent = fs.readFileSync(nsiPath);
 	nsiContent = nsiContent.toString();
-
 	nsiContent = nsiContent.replace(/\<\#name\#\>/g, packageInfo.name);
 	nsiContent = nsiContent.replace(/\<\#version\#\>/g, packageInfo.version);
 	nsiContent = nsiContent.replace(/\<\#softMid\#\>/g, packageInfo.softInfo.softMid);
 	nsiContent = nsiContent.replace(/\<\#softName\#\>/g, packageInfo.softInfo.softName);
-	nsiContent = nsiContent.replace(/\<\#downloadUrl\#\>/g, packageInfo.softInfo.downloadPrefix + '/' + packageInfo.name + '/lastest'+packageInfo.version+'.7z');
 	nsiContent = nsiContent.replace(/\<\#copyright\#\>/g, packageInfo.softInfo.copyright);
 	nsiContent = nsiContent.replace(/\<\#statisticsUrl\#\>/g, packageInfo.softInfo.statisticsUrl);
 	nsiContent = nsiContent.replace(/\<\#uninstallUrl\#\>/g, packageInfo.softInfo.downloadPrefix + '/' + packageInfo.name + '/uninstallWeb/');
-	fs.writeFileSync(nsiOutPath,nsiContent);
 
-	// 修改卸载推广的网址 
-	let uninstallPath = "./nsis/uninstallpage.xml.tmp";
-	let uninstallOutPath = "./nsis/skin/uninstallpage.xml";
-	let uninstallContent = fs.readFileSync(uninstallPath);
-	uninstallContent = uninstallContent.toString();
-	uninstallContent = uninstallContent.replace(/\<\#uninstallUrl\#\>/g, packageInfo.softInfo.downloadPrefix + '/' + packageInfo.name + '/uninstallWeb/');
-	fs.writeFileSync(uninstallOutPath,uninstallContent);
-	
-	// 写入version
-	let versionOutPath = "./build/version.json";
-	let verisonContent = JSON.stringify({"v":packageInfo.version, "c":packageInfo.softInfo.upgradeLog});
-	fs.writeFileSync(versionOutPath, verisonContent);
-				
+	pathUninstallExe =  __dirname +"/../build/" + packageInfo.name + process.env.arch + ".exe"
+	if(process.env.arch == 'x64'){
+		nsiContent = nsiContent.replace(/\<\#downloadUrl\#\>/g, packageInfo.softInfo.downloadPrefix + '/' + packageInfo.name + '/lastest_' + process.env.arch + '_' + packageInfo.version +'.7z');
+		nsiContent = nsiContent.replace(/\<\#installOutputName\#\>/g, packageInfo.name + process.env.arch);
+		fs.writeFileSync(nsiOutPath,nsiContent);
+
+		makeX64();
+	}else if(process.env.arch == 'ia32'){
+		nsiContent = nsiContent.replace(/\<\#downloadUrl\#\>/g, packageInfo.softInfo.downloadPrefix + '/' + packageInfo.name + '/lastest_' + process.env.arch + '_' + packageInfo.version +'.7z');
+		nsiContent = nsiContent.replace(/\<\#installOutputName\#\>/g, packageInfo.name + process.env.arch);
+		fs.writeFileSync(nsiOutPath,nsiContent);
+
+		makeIa32();
+	}else{
+		pathUninstallExe =  __dirname +"/../build/" + packageInfo.name + "ia32.exe";
+		nsiContent = nsiContent.replace(/\<\#downloadUrl\#\>/g, packageInfo.softInfo.downloadPrefix + '/' + packageInfo.name + '/lastest_' + process.env.arch + '_' + packageInfo.version +'.7z');
+		let nsiContent1 = nsiContent.replace(/\<\#installOutputName\#\>/g, packageInfo.name + "ia32");
+		fs.writeFileSync(nsiOutPath,nsiContent1);
+		makeIa32();
+		
+		setTimeout(() => {
+			pathUninstallExe =  __dirname +"/../build/" + packageInfo.name + "x64.exe";
+			nsiContent = nsiContent.replace(/\<\#downloadUrl\#\>/g, packageInfo.softInfo.downloadPrefix + '/' + packageInfo.name + '/lastest_' + process.env.arch + packageInfo.version +'.7z');
+			let nsiContent2 = nsiContent.replace(/\<\#installOutputName\#\>/g, packageInfo.name + "x64");
+			fs.writeFileSync(nsiOutPath,nsiContent2);
+			makeX64();
+		},15000)
+	}
+})();
+
+async function makeIa32(){
 	// 文件夹7z压缩
-	if(fs.existsSync(__dirname + '/../build/lastest.7z')){
-		//fs.unlinkSync(__dirname + '/../build/lastest.7z');
+	if(fs.existsSync(__dirname + '/../build/lastest_ia32_'+packageInfo.version+'.7z')){
+		fs.unlinkSync(__dirname + '/../build/lastest_ia32_'+packageInfo.version+'.7z');
 	}
+
 	if (process.env.BUILD_TARGET == 'pack') {
 		fs.readdir(__dirname+"/../build",(err,files) => {
 			files.map(dir => {
 				if(dir.indexOf(packageInfo.name+'-win32-ia32') != -1){
-					spawnExec([path7z, 'a', __dirname + '/../build/lastest.7z', __dirname + '/../build/' + dir + '/*']).then(res =>{
-						console.log(chalk.yellow.bold("软件目录压缩完成!"));
+					spawnExec([path7z, 'a', __dirname + '/../build/lastest_ia32_'+packageInfo.version+'.7z', __dirname + '/../build/' + dir + '/*']).then(res =>{
+						console.log(chalk.yellow.bold("32位 软件目录压缩完成!"));
 					}).catch(err => {
-						console.log(chalk.red.bold("err - 软件目录压缩失败!"),err);
+						console.log(chalk.red.bold("err - 32位 软件目录压缩失败!"),err);
 					});
 				}
 			})
 		})
 	}else{
-		logStats(path7z,'nsis 开始打包!');
+		logStats(path7z,'nsis 32位 开始打包!');
 		await spawnExec([pathNsis,__dirname+'/test.nsi']).then(async(res) =>{
-			console.log(chalk.yellow.bold("nsis 打包完成!"));
+			console.log(chalk.yellow.bold("nsis 32位 打包完成!"));
 			
 			// 执行静默安装
 			await spawnExec([pathUninstallExe,'/S']).then(res =>{
 				fs.copyFileSync(os.tmpdir() + '/uninst.exe', __dirname +"/../build/"+packageInfo.name+"-win32-ia32/uninst.exe")
-				console.log(chalk.yellow.bold("生成卸载文件!"));
+				console.log(chalk.yellow.bold("32位 生成卸载文件!"));
 			}).catch(err => {
-				console.log(chalk.red.bold("err - 生成卸载文件失败,请查看配置是否正确!"), err);
+				console.log(chalk.red.bold("err - 32位 生成卸载文件失败,请查看配置是否正确!"), err);
 				return false;
 			});
-			
 		}).catch(err => {
-			console.log(chalk.red.bold("err - 打包失败,请查看配置是否正确!"), err);
+			console.log(chalk.red.bold("err - 32位 打包失败,请查看配置是否正确!"), err);
 			return false;
 		});
 	}
-})();
+}
 
-function getFormData (data) {
-	let formData = new FormData();
-	for (let i in data) {
-		formData.append(i, data[i]);
+async function makeX64(){
+	// 文件夹7z压缩
+	if(fs.existsSync(__dirname + '/../build/lastest_x64_'+packageInfo.version+'.7z')){
+		fs.unlinkSync(__dirname + '/../build/lastest_x64_'+packageInfo.version+'.7z');
+	}
+
+	if (process.env.BUILD_TARGET == 'pack') {
+		fs.readdir(__dirname+"/../build",(err,files) => {
+			files.map(dir => {
+				if(dir.indexOf(packageInfo.name+'-win32-x64') != -1){
+					spawnExec([path7z, 'a', __dirname + '/../build/lastest_x64_'+packageInfo.version+'.7z', __dirname + '/../build/' + dir + '/*']).then(res =>{
+						console.log(chalk.yellow.bold("64位 软件目录压缩完成!"));
+					}).catch(err => {
+						console.log(chalk.red.bold("err - 64位 软件目录压缩失败!"),err);
+					});
+				}
+			})
+		})
+	}else{
+		logStats(path7z,'nsis 64位 开始打包!');
+		await spawnExec([pathNsis,__dirname+'/test.nsi']).then(async(res) =>{
+			console.log(chalk.yellow.bold("nsis 64位 打包完成!"));
+			
+			// 执行静默安装
+			await spawnExec([pathUninstallExe,'/S']).then(res =>{
+				fs.copyFileSync(os.tmpdir() + '/uninst.exe', __dirname +"/../build/"+packageInfo.name+"-win32-x64/uninst.exe")
+				console.log(chalk.yellow.bold("64位 生成卸载文件!"));
+			}).catch(err => {
+				console.log(chalk.red.bold("err - 64位 生成卸载文件失败,请查看配置是否正确!"), err);
+				return false;
+			});
+		}).catch(err => {
+			console.log(chalk.red.bold("err - 64位 打包失败,请查看配置是否正确!"), err);
+			return false;
+		});
 	}
-	return formData;
-};
+}
 
 function logStats (proc, data) {
 	let log = ''

+ 1 - 1
nsis/skin/uninstallpage.xml

@@ -3,7 +3,7 @@
    <VerticalLayout >
     <VerticalLayout width="570" height="314" bkimage="file='uninstall_bg1.png'">
 		<Control height="40" />
-		<WebBrowser height="264" width="550"  padding="10,0,0,0" name="oneclick_browser" homepage="https://xy.xingyousoft.com/soft/XYAudio/uninstallWeb/" autonavi="true"/>
+		<WebBrowser height="264" width="550"  padding="10,0,0,0" name="oneclick_browser" homepage="https://xy.xingyousoft.com/soft/XYVideo/uninstallWeb/" autonavi="true"/>
 	</VerticalLayout>
 	
 	<VerticalLayout bkimage="file='bgbottom.png' corner='10,0,10,10'" >

+ 11 - 2
nsis/test.nsh

@@ -231,7 +231,16 @@ FunctionEnd
 # 下载安装包
 Function DownloadApp
 	nsNiuniuSkin::SetControlAttribute $hInstallDlg "processname" "text" "解压中 ..."
-	NSxfer::Request /URL "${APP_DOWNLOAD_URL}" /LOCAL "$INSTDIR\${INSTALL_7Z_NAME}" /TIMEOUTCONNECT 6000 /TIMEOUTRECONNECT 6000 /END
+	
+	# 操作系统 x86 x64 下载对应的安装包 AMD64
+	ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PROCESSOR_ARCHITECTURE"
+	${if} $0 == 'x86'
+		NSxfer::Request /URL "https://xy.xingyousoft.com/soft/XYVideo/lastest_ia32_${PRODUCT_VERSION}.7z" /LOCAL "$INSTDIR\${INSTALL_7Z_NAME}" /TIMEOUTCONNECT 6000 /TIMEOUTRECONNECT 6000 /END
+	${else}
+		NSxfer::Request /URL "https://xy.xingyousoft.com/soft/XYVideo/lastest_x64_${PRODUCT_VERSION}.7z" /LOCAL "$INSTDIR\${INSTALL_7Z_NAME}" /TIMEOUTCONNECT 6000 /TIMEOUTRECONNECT 6000 /END
+	${Endif}
+	
+	#NSxfer::Request /URL "${APP_DOWNLOAD_URL}" /LOCAL "$INSTDIR\${INSTALL_7Z_NAME}" /TIMEOUTCONNECT 6000 /TIMEOUTRECONNECT 6000 /END
 	Pop $3 ; Request ID1
 	Call TimerDownloadInfiniteLoop 
 	NSxfer::Wait /ID $3 /MODE SILENT /END
@@ -240,7 +249,7 @@ Function DownloadApp
 	${If} $R0 < 200
 	${OrIf} $R0 > 299
 		ThreadTimer::Stop
-		MessageBox MB_OKCANCEL  "$R0 解压出错,请确保网络连接正常,然后再试!" IDOK trueValue IDCANCEL falseValue
+		MessageBox MB_OKCANCEL  "$R0 下载出错,请确保网络连接正常,然后再试!" IDOK trueValue IDCANCEL falseValue
 		trueValue:
 			Call DownloadApp
 			Goto next

+ 9 - 9
nsis/test.nsi

@@ -1,16 +1,16 @@
 # ====================== 自定义宏 产品信息==============================
-!define PRODUCT_MID        		    "W0GN9r611Z7w"
-!define PRODUCT_VERSION        		"1.1.0.0"
-!define PRODUCT_NAME           		"星优音频助手"
-!define INSTALL_OUTPUT_NAME    		"XYAudio_XY.exe" 
-!define EXE_NAME               		"XYAudio.exe"
-!define PRODUCT_PATHNAME           	"XYAudio"     #安装卸载项用到的KEY,注册表
-!define INSTALL_APPEND_PATH         "XYAudio"     #安装路径追加的名称 
-!define APP_DOWNLOAD_URL    		"https://xy.xingyousoft.com/soft/XYAudio/lastest1.1.0.0.7z"
+!define PRODUCT_MID        		    "EB6PwuL4mFP1"
+!define PRODUCT_VERSION        		"2.0.0.0"
+!define PRODUCT_NAME           		"星优视频处理器"
+!define INSTALL_OUTPUT_NAME    		"XYVideox64.exe" 
+!define EXE_NAME               		"XYVideo.exe"
+!define PRODUCT_PATHNAME           	"XYVideo"     #安装卸载项用到的KEY,注册表
+!define INSTALL_APPEND_PATH         "XYVideo"     #安装路径追加的名称 
+!define APP_DOWNLOAD_URL    		"https://xy.xingyousoft.com/soft/XYVideo/lastest_x64_2.0.0.0.7z"
 !define PRODUCT_PUBLISHER      	    "苏州星优办公软件有限公司"
 !define PRODUCT_LEGAL          	    "苏州星优办公软件有限公司"
 !define STATISTICS_url              "https://www.xingyousoft.com/api/index/user_log"   # 统计网址
-!define UNINSTALL_url               "https://xy.xingyousoft.com/soft/XYAudio/uninstallWeb/?v=1.1.0.0"   # 接卸优惠网址
+!define UNINSTALL_url               "https://xy.xingyousoft.com/soft/XYVideo/uninstallWeb/?v=2.0.0.0"   # 接卸优惠网址
 
 # ====================== 自定义宏 安装信息==============================
 !define INSTALL_7Z_NAME 	   		"app.7z"

+ 1 - 1
nsis/test.tmp

@@ -2,7 +2,7 @@
 !define PRODUCT_MID        		    "<#softMid#>"
 !define PRODUCT_VERSION        		"<#version#>"
 !define PRODUCT_NAME           		"<#softName#>"
-!define INSTALL_OUTPUT_NAME    		"<#name#>_XY.exe" 
+!define INSTALL_OUTPUT_NAME    		"<#installOutputName#>.exe" 
 !define EXE_NAME               		"<#name#>.exe"
 !define PRODUCT_PATHNAME           	"<#name#>"     #安装卸载项用到的KEY,注册表
 !define INSTALL_APPEND_PATH         "<#name#>"     #安装路径追加的名称 

+ 9 - 5
package.json

@@ -8,11 +8,11 @@
 	"softInfo": {
 		"description": "这里是软件描述文档",
 		"downloadName": "XYVideo",
-		"softMid": "W0GN9r611Z7w",
+		"softMid": "EB6PwuL4mFP1",
 		"softName": "星优视频处理器",
 		"copyright": "苏州星优办公软件有限公司",
-		"popupAdvId": "6",
-		"linkId": "9",
+		"popupAdvId": "22",
+		"linkId": "19",
 		"upgradeLog": "1、修复了部分BUG</br>",
 		"downloadPrefix": "https://xy.xingyousoft.com/soft",
 		"statisticsUrl": "https://www.xingyousoft.com/api/index/user_log"
@@ -31,8 +31,12 @@
 		"postinstall": "",
 		"pack": "electron-builder --dir",
 		"dist": "electron-builder",
-		"nsis:dev": "cross-env BUILD_TARGET=win32 node .electron-vue/build.js && node nsis/build.js",
-		"nsis:publish": "cross-env BUILD_TARGET=pack node nsis/build.js"
+		"nsis:dev": " node nsis/build.js",
+		"nsis:publish": "cross-env BUILD_TARGET=pack node nsis/build.js",
+		"nsis:win32": "cross-env BUILD_TARGET=win32 arch=ia32 node .electron-vue/build.js && cross-env arch=ia32 node nsis/build.js",
+		"nsis:publish32": "cross-env BUILD_TARGET=pack arch=ia32 node nsis/build.js",
+		"nsis:win64": "cross-env BUILD_TARGET=win32 arch=x64 node .electron-vue/build.js && cross-env arch=x64 node nsis/build.js",
+		"nsis:publish64": "cross-env BUILD_TARGET=pack arch=x64 node nsis/build.js"
 	},
 	"dependencies": {
 		"axios": "^0.18.0",