+ \r
+ /// <summary>\r
+ /// ショートカット先のEXEファイルに対して適切な名前を生成する。\r
+ /// \r
+ /// 具体的には、アセンブリの製品名をまず優先的に使い、\r
+ /// それがなければ、exeファイルのファイル名(拡張子を除いたもの)を返す。\r
+ /// \r
+ /// 拡張子はつかないので、lnkファイル名に使う場合は、手動で\r
+ /// <code>".lnk"</code>を追加すること。\r
+ /// </summary>\r
+ /// <returns>拡張子を含まない、適切な名前</returns>\r
+ public string GetSuitableShellLinkNameFor()\r
+ {\r
+ string exeFile = GetPath(0);\r
+ \r
+ try {\r
+ FileVersionInfo vInfo = FileVersionInfo.GetVersionInfo(exeFile);\r
+ if (vInfo.ProductName != null && vInfo.ProductName != string.Empty\r
+ && vInfo.ProductName.IndexOfAny(System.IO.Path.GetInvalidFileNameChars()) < 0) {\r
+ // 原則、製品名を採用\r
+ return vInfo.ProductName;\r
+ }\r
+ } catch (Exception) {}\r
+\r
+ // そのほかの場合は、*.exeファイルの名前をそのまま使用\r
+ return System.IO.Path.GetFileNameWithoutExtension(exeFile);\r
+ }\r