2016-09-25 17 views
0

私はノードのWebkitで新しく、HTMLでデスクトップアプリケーションを開発しています。私は小さなプロジェクトを作成してnw.exeを使って動作し、Windows 8.1の64ビットで正常に動作しますが、Windows 7では動作しません。ノード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ビットに固執するだけで、多くの手間を省くことができます。 メモリアドレッシングモードのサイズが2倍で、すべての命令(大小)が幅の広いレジスタをクリア/設定/読みとる必要があるため、64ビットアプリケーションの方が常に遅くなります。

また、アプリが初めて実行されてもはや実行されなくても、通常はまだメモリに残っていて、完全に/正しく終了していないためです。これをチェックするには、CTRL + ALT + DELを実行して、それがまだ存在する場合はプロセスを終了します。真、 「ページキャッシュ」:偽

最後に、あなたのPACKAGE.JSONは少しので、「シングル・インスタンス」

 "nodejs": true, 

...のようないくつかのより多くのパラメータを研究して追加することを検討欠くようです

...など。がんばろう。

関連する問題