C# יצירת קיצור דרך על שולחן עבודה
-
על פי זה
http://stackoverflow.com/questions/4897655/create-shortcut-on-desktop-c-sharp
ייבאתי את הרפרנס בתפריט add reference, וכתבתי כך:using IWshRuntimeLibrary; WshShell wsh = new WshShell(); IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut( Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\filename.lnk") as IWshRuntimeLibrary.IWshShortcut; shortcut.Arguments = ""; shortcut.TargetPath = Environment.CurrentDirectory + "\\filename.exe"; shortcut.WindowStyle = 1; shortcut.Description = "filename"; shortcut.WorkingDirectory = Environment.CurrentDirectory + ""; shortcut.IconLocation = Environment.CurrentDirectory + "\\icon.ico"; shortcut.Save();
במחשב הפיתוח זה עבד כמצופה, וייצר קיצור דרך . אבל כשהעברתי את היישום ארוז למחשב אחר, זה קרס מיד בהפעלה הראשונה. אבל כשביטלתי את השורות הנ"ל הכל עבד. למה זה קורה?
נ.ב. במחשב שלי יש וינדוס 10, ומחשב השני וינדוס 7, זה יכול להיות קשור?
תודה מראש!פורסם במקור בפורום CODE613 ב02/05/2017 15:28 (+03:00)
-
למה לא ללכוד את השגיאה? עוטפים בtry ובcatch פולטים את השגיאה להודעה או לקובץ (עדיף, כי זה קל לקרוא...).
אני לא רואה בעיה במבט ראשון, חוץ משורות 7 ו10 שהם "מסוכנות": שרשור נתיב נוכחי עם תוספת של סלש יכול לגרום לנתיב לא חוקי במקרה בו התיקיה בנוכחית היא תיקיית שורש כמו C:\ שאז זה ייתן C:\filename.exe.
בשביל לפתור את זה תשתמש בPath.Combine:Path.Combine(Environment.CurrentDirectory, "filename.exe")
ככה זה יעבוד אפי' בלינוקס
פורסם במקור בפורום CODE613 ב03/05/2017 09:47 (+03:00)
-
רוח הקודש הופיעה בבית מדרשך, זה באמת נתיב לא חוקי...
System.IO.FileNotFoundException: The filename, directory name, or volume label syntax is incorrect. (Exception from HRESULT: 0x8007007B) at IWshRuntimeLibrary.IWshShortcut.Save() at projectname.FirstRun.CreateShortcut()
השאלה מה יכול לגרום לזה להיות לא חוקי, לפני הקריסה עשיתי רישום של שני הנתיבים, הקובץ יעד והלינק, ושניהם נרשמו כמו שצריך. וגם שיניתי את היצירה של הנתיב עם פאס' קומביין כך:
WshShell wsh = new WshShell(); IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut( Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) , "projectname.lnk")) as IWshRuntimeLibrary.IWshShortcut; System.IO.File.WriteAllText(Path.Combine(Environment.CurrentDirectory, "first.log"), Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "projectname.lnk") ); shortcut.Arguments = ""; shortcut.TargetPath = Path.Combine(Environment.CurrentDirectory, "projectname.exe"); System.IO.File.WriteAllText(Path.Combine(Environment.CurrentDirectory, "second.log"), Path.Combine(Environment.CurrentDirectory, "projectname.exe") ); shortcut.WindowStyle = 1; shortcut.WorkingDirectory = Path.Combine(Environment.CurrentDirectory, ""); shortcut.IconLocation = Path.Combine(Environment.CurrentDirectory, "projectname.exe"); shortcut.Save(); C:\Users\usrname\Desktop\projectname.lnk C:\Users\usrname\Dropbox\projectname\projectname\bin\Debug\projectname.exe
זה גם לא בעיה של הרשאות, כי הצלחתי לכתוב סתם קובץ טקסט על השולחן עבודה שלו.
מה עוד יכול להיות :?:פורסם במקור בפורום CODE613 ב03/05/2017 14:11 (+03:00)