2016-09-25 138 views
0

我是新的節點webkit和在html中開發桌面應用程序。我創建了一個小項目,並運行使用nw.exe和它在Windows 8.1 64位工作正常,但它不在Windows 7中工作。node-webkit應用程序不能在Windows 7上工作32位

意味着它運行,如果我點擊很多次然後突然開始和關閉一次然後不能夠再次運行。

的package.json

{ 
"window": { 
"icon": "app.png", 
"toolbar": true, 
"show": false, 
"toolbar": false, 
"frame": true, 
"position": "center", 
"width": 1360, 
"height": 720 
}, 
"apache_port": 81, 
"mysql_port": 3308, 
"name": "My App", 
"version": "1.0.0", 
"author": "Author", 
"email": "[email protected]", 
"phone": "+91-9999999999", 
"url": "http://example.com", 
"main": "index.html" 

}

的Index.html

<script> 
String.prototype.replaceAll = function(search, replacement) { 
var target = this; 
return target.replace(new RegExp(search, 'g'), replacement); 
}; 

var gui = require("nw.gui"); 

var fs = require('fs'); 

if(process.env.PWD) { 
    process.chdir(process.env.PWD); 
} 

/** 
* Base dirpath 
*/ 
var base_path=process.cwd(); 

var i=0; 
while(i!=-1) { 
base_path=base_path.replace("\\","/"); 
i=base_path.indexOf('\\'); 
} 

/** 
* Package.JSON Details 
*/ 
var package; 

//read config file 
fs.readFile('./package.json', 'utf-8', function (error, contents) { 
    package = JSON.parse(contents); 
}); 

function log(str) { 
    //document.getElementById('text').value+= (str+"\n"); 
} 

function proc_config(file,path) { 
    fs.readFile(base_path+'/config/'+file, 'utf-8', function (error, contents) { 

     var substr="%phpbrowserbox%"; 
     var replc=base_path; 
     contents = contents.replaceAll(substr, replc); 

     contents = contents.replaceAll('%mysql_port%', package.mysql_port); 
     contents = contents.replaceAll('%apache_port%', package.apache_port); 


     fs.writeFile(base_path+"/"+path+"/"+file, contents, function(err) { 
     if(err) { 
       return log("error:"+err); 
     } 


     log(file+" was saved to "+base_path+"/"+path+"/"+file); 
    }); 


    }); 

} 
</script> 

<!DOCTYPE html> 
<html> 
<head> 
<title>Please wait...</title> 
<style> 
html,body {height:100%;} 
</style> 

</head> 
<body style="margin:0;padding:0;overflow:hidden;"> 

<img src="splash.jpg" style="width:100%;height:100%;"> 

<script> 
window.onload=function() { 
document.title=package.name; 
proc_config('php.ini','bin/php'); 
proc_config('php.ini','bin/apache/bin'); 

proc_config('my.ini','bin/mysql'); 
proc_config('httpd.conf','bin/apache/conf'); 

var mysqld=base_path+"/bin/mysql/bin/mysqld.exe" 
var httpd=base_path+"/bin/apache/bin/httpd.exe" 

var proc = require('child_process'); 

//start apache server 
proc.spawn(httpd); 

//start mysql server 
proc.spawn(mysqld); 

location.href="http://localhost:"+package.apache_port+"?apache_port="+package.apache_port+"&mysql_port="+package.mysql_port+"&cache="+Math.random()+"&base_path="+base_path; 

gui.Window.get().show(); 
} 
</script> 
</body> 
</html> 

任何一個可以幫助?

+0

你使用的是32位版本的nw.js嗎? –

+0

實際上,我使用的是phpbrowser盒子及其在節點webkit中,所以我不知道它們使用的是什麼版本! –

回答

0

64位NW不能在32位系統上工作,但32位應該可以在所有系統上工作。爲了節省自己很多麻煩,只需編譯並堅持32位。 無論如何,64位應用程序總是比較慢,因爲內存尋址模式的大小是雙倍的,每個指令(大或小)都必須清除/設置/讀取更寬的寄存器。另外,無論何時你的應用第一次運行然後不再運行,通常都是因爲它仍然在內存中,並且沒有完全/正確退出。若要檢查此操作,請按CTRL + ALT + DEL,如果仍存在,則終止進程。

最後,你的package.json似乎有點欠缺所以考慮研究並增加了一些更多的參數,如...

 "nodejs": true, 

「單實例」:真實, 「頁面緩存」:假

...等等。祝你好運。

相關問題