kiyo4_k さんが書きました:
最初に見つけたのは mailclassifier-1.0_ja です。mailclassifierのインストール時にmailclassifier-1.0_ja自身が生成したフォルダなのに以下のように
引用:
警告
このフォルダのデータを作成できませんでした。プロファイルフォルダへの書き込みが許可されているかどうか確認してください。
というダイアログが出て動作しません。
# このダイアログはSymantecのお馬鹿が出しているのかも知れませんが
このダイアログは MailClassifier が出しているものです。
Premier さんによると、
Windows XP でも同じような問題が起こっているらしいのですが、新規プロファイルでは問題ないようです。
エラーコンソールに何か出ていませんか?
mailclassifier/content/js/Account.js
コード:
184: this.cannotCreate=function(e){
185: alert(extbundle.GetStringFromName("ufolder.cannot_create"));
186: }
...
218: try{
219: this.filter=createProxy(Components.classes['@uniroma3.it/MailClassifier/nsMCFilter;1'],Components.interfaces.nsIMCFilter,proxyAsync);
220: this.filter.setFolder(rootFolder);
221: }
222: catch(e){
223: this.cannotCreate(e);
224: }
kiyo4_k さんが書きました:
インストール時のThunderbird(かアドオンインストーラ)の権限と使用ユーザの権限が違っているのかも知れませんし、それが問題を引き起こすのかも知れません(ぜんぜんわからないですが)
ソースを見るとファイルの読み書きのところなので、アクセス権が関係しているようなんですが、
ファイルの作成時にディレクトリごと作成してるのが問題なのかも?
# もしくは、それ以前にフォルダペインのツリーを取得できていない。
components/nsMCFilter.js
コード:
277: nsMCFilter.prototype = {
278: MAX_MESSAGES: 1000000,
279: MODE_RDWR: 0x20 | 0x04 ,
280: MODE_RDONLY: 0x01,
281: setFolder: function(folder){
282: var profileFolder = ds.get('ProfD', Components.interfaces.nsIFile);
283: var servername=folder.server.realHostName;
284: var username = folder.server.realUsername;
285: var file=profileFolder;
286: file.append("MailClassifier");
287: file.append(username+"@"+servername);
288: var path=new Array();
289: var currentFolder=folder;
290: while(currentFolder!=folder.rootFolder && currentFolder){
291: path.push(currentFolder.name);
292: currentFolder=currentFolder.parentMsgFolder;
293: }
294: for(var i=path.length-1;i>=0;i--) file.append(path[i]);
295: file.append(folder.name+".mctf");
296: this.file=file;
297: if(!file.exists()){
298: try{
299: file.create(0,0666);
300: this.writeTrainingData();
301: }
302: catch(e){throw "cannot_create"}
303: }
304:
305: },
299行目のところは、
コード:
file.create(file.NORMAL_FILE_TYPE, 0666);
と同じです。
Components.interfaces.nsIFile.NORMAL_FILE_TYPE = 0
Components.interfaces.nsIFile.DIRECTORY_TYPE = 1
参考:
Code snippets:File I/O - MDC
[quote="kiyo4_k"]最初に見つけたのは mailclassifier-1.0_ja です。mailclassifierのインストール時にmailclassifier-1.0_ja自身が生成したフォルダなのに以下のように
[quote]警告
このフォルダのデータを作成できませんでした。プロファイルフォルダへの書き込みが許可されているかどうか確認してください。[/quote]
というダイアログが出て動作しません。
# このダイアログはSymantecのお馬鹿が出しているのかも知れませんが [/quote]
このダイアログは MailClassifier が出しているものです。
Premier さんによると、[url=https://www.mozdev.org/bugs/show_bug.cgi?id=17378]Windows XP でも同じような問題が起こっている[/url]らしいのですが、新規プロファイルでは問題ないようです。
エラーコンソールに何か出ていませんか?
mailclassifier/content/js/Account.js
[code]184: this.cannotCreate=function(e){
185: alert(extbundle.GetStringFromName("ufolder.cannot_create"));
186: }
...
218: try{
219: this.filter=createProxy(Components.classes['@uniroma3.it/MailClassifier/nsMCFilter;1'],Components.interfaces.nsIMCFilter,proxyAsync);
220: this.filter.setFolder(rootFolder);
221: }
222: catch(e){
223: this.cannotCreate(e);
224: }[/code]
[quote="kiyo4_k"]インストール時のThunderbird(かアドオンインストーラ)の権限と使用ユーザの権限が違っているのかも知れませんし、それが問題を引き起こすのかも知れません(ぜんぜんわからないですが) [/quote]
ソースを見るとファイルの読み書きのところなので、アクセス権が関係しているようなんですが、
ファイルの作成時にディレクトリごと作成してるのが問題なのかも?
# もしくは、それ以前にフォルダペインのツリーを取得できていない。
components/nsMCFilter.js
[code]277: nsMCFilter.prototype = {
278: MAX_MESSAGES: 1000000,
279: MODE_RDWR: 0x20 | 0x04 ,
280: MODE_RDONLY: 0x01,
281: setFolder: function(folder){
282: var profileFolder = ds.get('ProfD', Components.interfaces.nsIFile);
283: var servername=folder.server.realHostName;
284: var username = folder.server.realUsername;
285: var file=profileFolder;
286: file.append("MailClassifier");
287: file.append(username+"@"+servername);
288: var path=new Array();
289: var currentFolder=folder;
290: while(currentFolder!=folder.rootFolder && currentFolder){
291: path.push(currentFolder.name);
292: currentFolder=currentFolder.parentMsgFolder;
293: }
294: for(var i=path.length-1;i>=0;i--) file.append(path[i]);
295: file.append(folder.name+".mctf");
296: this.file=file;
297: if(!file.exists()){
298: try{
299: file.create(0,0666);
300: this.writeTrainingData();
301: }
302: catch(e){throw "cannot_create"}
303: }
304:
305: },[/code]
299行目のところは、
[code]file.create(file.NORMAL_FILE_TYPE, 0666);[/code]
と同じです。
Components.interfaces.nsIFile.NORMAL_FILE_TYPE = 0
Components.interfaces.nsIFile.DIRECTORY_TYPE = 1
参考:
[url=http://developer.mozilla.org/ja/docs/Code_snippets:File_I/O]Code snippets:File I/O - MDC[/url]