From: Matt C. <mat...@th...> - 2005-01-09 22:45:43
|
Hi. I'm using py2exe to build the BitTorrent 4.0 beta. When there is a traceback in an exe built by py2exe, it gets written into a log file in the same directory as the exe. Unfortunately, if the user is not a windows Administrator, they will usually not have write permission to the directory that contains the exe, and therefore not be able to write the error log. The filename is constructed in the definition of Stderr.write() in boot_common.py, L 27: def write(self, text, alert=sys._MessageBox, fname=sys.executable + '.log'): Wouldn't it make more sense to write the traceback into a file that is more likely to be readable to the user? Something like this: def write(self, text, alert=sys._MessageBox, fname=os.path.join(os.path.expanduser('~'), os.path.split(sys.executable)[1]+'.log')): matt |
From: Balazs M. <ta...@fr...> - 2005-01-10 18:13:38
|
Matt Chisholm <matt-bittorrent-pygtk <at> theory.org> writes: > Unfortunately, if > the user is not a windows Administrator, they will usually not have > write permission to the directory that contains the exe, and therefore > not be able to write the error log. Not sure if this is a real problem, because how did someone installed the program to a directory he has no write permission? > def write(self, text, alert=sys._MessageBox, > fname=os.path.join(os.path.expanduser('~'), os.path.split(sys. executable)[1]+'.log')): > > matt > Consider the following env. vars: APPDATA, join(HOMEDRIVE,HOMEPATH), USERPROFILE in worst case TEMP is always there Or you can use My Documents folder too: from win32com.shell import shell, shellcon mydoc_path=shell.SHGetPathFromIDList ( shell.SHGetSpecialFolderLocation (0, shellcon.CSIDL_PERSONAL)) --bm |
From: Thomas H. <th...@py...> - 2005-01-10 20:53:31
|
Matt Chisholm <mat...@th...> writes: > Hi. I'm using py2exe to build the BitTorrent 4.0 beta. > > When there is a traceback in an exe built by py2exe, it gets written > into a log file in the same directory as the exe. Unfortunately, if > the user is not a windows Administrator, they will usually not have > write permission to the directory that contains the exe, and therefore > not be able to write the error log. The filename is constructed in the > definition of Stderr.write() in boot_common.py, L 27: > > def write(self, text, alert=sys._MessageBox, > fname=sys.executable + '.log'): > > Wouldn't it make more sense to write the traceback into a file that is > more likely to be readable to the user? Something like this: > > def write(self, text, alert=sys._MessageBox, > fname=os.path.join(os.path.expanduser('~'), os.path.split(sys.executable)[1]+'.log')): > Certainly true, but it is easy to override it in the application code itself. Simply assign your own logger object to sys.stderr. Another thing that may be a good idea is to name the logfile somewhat different - 'myapp.exe.log' looks too much like virus code. Thomas |