リビジョン 44
自動更新VPS対応(注意:app.configは動作環境に合わせて設定してください)
| trunk/src/ProcessManagement/ProcessManagement/Common/CommonDefine.cs | ||
|---|---|---|
| 37 | 37 |
/// <summary> |
| 38 | 38 |
/// パスを定数で定義する |
| 39 | 39 |
/// </summary> |
| 40 |
public const string s_UPDATE_FILE_PATH = @"Z:\52GenbaKantokuHisyo"; |
|
| 41 |
//public const string s_UPDATE_FILE_PATH = @"Z:\5-2現場監督秘書"; |
|
| 42 |
//private const string s_UPDATE_FILE_PATH = @"Z:\⑤IT事業部用\Debug"; |
|
| 43 | 40 |
public const string s_UPDATECOPY_NAME = "UpDateCopy.exe"; |
| 41 |
// ▼自動更新VPS対応▼ |
|
| 42 |
// FTPユーザ名 |
|
| 43 |
public const string s_FTP_USER_NAME = "pmaint"; |
|
| 44 |
// FTPパスワード |
|
| 45 |
public const string s_FTP_PASSWORD = "hyou5210"; |
|
| 46 |
// FTPつなぎ先パス |
|
| 47 |
public const string s_FTP_SERVER_PATH = "ftp://203.137.92.122:990/HYOU/"; |
|
| 48 |
// 更新モジュールフォルダ,ファイル名 |
|
| 49 |
public const string s_UPDATE_MODULE = "UpDateCopy"; |
|
| 50 |
// UVERSIONキー名 |
|
| 51 |
public const string s_UVERSION_KEY = "uversion"; |
|
| 52 |
// MVERSIONキー名 |
|
| 53 |
public const string s_MVERSION_KEY = "mversion"; |
|
| 54 |
// VERSIONセクション名 |
|
| 55 |
public const string s_VERSION_SECTION = "genbaKantokuHisyo"; |
|
| 56 |
// 起動パラメータ |
|
| 57 |
public const string s_KIDOU_PARAM = "/NOCHECK"; |
|
| 58 |
// ▲自動更新VPS対応▲ |
|
| 44 | 59 |
#endregion |
| 45 | 60 |
|
| 46 | 61 |
#region システム定義ファイルパス |
| trunk/src/ProcessManagement/ProcessManagement/Common/CommonVersion.cs | ||
|---|---|---|
| 14 | 14 |
/// <summary> |
| 15 | 15 |
/// 本体バージョン |
| 16 | 16 |
/// </summary> |
| 17 |
public static int s_SystemVersion = 1;
|
|
| 17 |
public static int s_SystemVersion = 2;
|
|
| 18 | 18 |
|
| 19 | 19 |
/// <summary> |
| 20 | 20 |
/// コピー・環境バージョン |
| 21 | 21 |
/// </summary> |
| 22 |
public static int s_UpDateCopyVersion = 1;
|
|
| 22 |
public static int s_UpDateCopyVersion = 2;
|
|
| 23 | 23 |
} |
| 24 | 24 |
} |
| trunk/src/ProcessManagement/ProcessManagement/Common/Process/ClsUpDate.cs | ||
|---|---|---|
| 6 | 6 |
using System.Security.Cryptography; |
| 7 | 7 |
using System.Text; |
| 8 | 8 |
using System.Threading.Tasks; |
| 9 |
using System.IO.Compression; |
|
| 9 | 10 |
|
| 10 | 11 |
namespace ProcessManagement.Common |
| 11 | 12 |
{
|
| ... | ... | |
| 14 | 15 |
/// </summary> |
| 15 | 16 |
public static class ClsUpDate |
| 16 | 17 |
{
|
| 18 |
// ▼自動更新VPS対応▼ |
|
| 19 |
// サーバからファイルダウンロード |
|
| 20 |
private static void download(String serverPath, String downloadSakiPath) |
|
| 21 |
{
|
|
| 22 |
//WebClientオブジェクトを作成 |
|
| 23 |
System.Net.WebClient wc = new System.Net.WebClient(); |
|
| 24 |
//ログインユーザー名とパスワードを指定 |
|
| 25 |
wc.Credentials = |
|
| 26 |
new System.Net.NetworkCredential( |
|
| 27 |
CommonDefine.s_FTP_USER_NAME, CommonDefine.s_FTP_PASSWORD); |
|
| 28 |
//FTPサーバーからダウンロードする |
|
| 29 |
wc.DownloadFile(serverPath, downloadSakiPath); |
|
| 30 |
//解放する |
|
| 31 |
wc.Dispose(); |
|
| 32 |
} |
|
| 33 |
// ▲自動更新VPS対応▲ |
|
| 17 | 34 |
#region 使用定義 |
| 18 | 35 |
//log4netログを使用する |
| 19 | 36 |
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); |
| 20 | 37 |
#endregion |
| 21 | 38 |
|
| 22 |
#region ファイルのハッシュ値と更新日付を確認する
|
|
| 39 |
#region ファイルをコピーする
|
|
| 23 | 40 |
/// <summary> |
| 24 | 41 |
/// ファイルのハッシュ値と更新日付を確認する |
| 25 | 42 |
/// </summary> |
| 26 | 43 |
/// <returns></returns> |
| 27 |
public static bool ProgramTimeStampCheck()
|
|
| 44 |
public static bool UpdateAndEnvFileCopy()
|
|
| 28 | 45 |
{
|
| 29 |
try |
|
| 30 |
{
|
|
| 31 |
bool bRet = true; // 戻り値 |
|
| 32 |
bool bCopyUpdataProc = false; // アップデートPGコピーフラグ |
|
| 33 |
string srcUpdataProc = string.Empty; // コピー元ファイルパス作成エリア |
|
| 34 |
string destUpdataProc = string.Empty; // コピー先ファイルパス作成エリア |
|
| 46 |
bool bRet = true; // 戻り値 |
|
| 35 | 47 |
|
| 36 |
// デバック以外は使わない |
|
| 37 |
//return true; |
|
| 38 |
// 接続できなければ処理しない |
|
| 39 |
if (!Directory.Exists(CommonDefine.s_UPDATE_FILE_PATH)) return true; |
|
| 48 |
// Windows TEMPフォルダパス |
|
| 49 |
string tempPath = Path.GetTempPath(); |
|
| 50 |
// アップデートファイルパス |
|
| 51 |
string updateFilePath = tempPath + CommonDefine.s_UPDATE_MODULE; |
|
| 52 |
// サーバ更新モジュールzipファイル(ダウンロード後) |
|
| 53 |
string updateModuleZip = tempPath + CommonDefine.s_UPDATE_MODULE + ".zip"; |
|
| 40 | 54 |
|
| 41 |
// コピー元(サーバー)ファイルリストを取得する |
|
| 42 |
string[] files = Directory.GetFiles(CommonDefine.s_UPDATE_FILE_PATH); |
|
| 43 |
foreach (string sourceFile in files) |
|
| 44 |
{
|
|
| 45 |
// ファイル名を取得する |
|
| 46 |
int spoint = sourceFile.LastIndexOf("\\") + 1;
|
|
| 47 |
string Procename = sourceFile.Substring(spoint); |
|
| 48 |
// コピー先(カレント)ファイル名作成 |
|
| 49 |
string destinationFile = System.Environment.CurrentDirectory + "\\" + Procename; |
|
| 50 |
// コピー先(カレント)にファイルがない |
|
| 51 |
if (!File.Exists(@destinationFile)) |
|
| 52 |
{
|
|
| 53 |
// コピープロセスが無い場合はここでコピー |
|
| 54 |
if (CommonDefine.s_UPDATECOPY_NAME == Procename) |
|
| 55 |
{
|
|
| 56 |
srcUpdataProc = @sourceFile; |
|
| 57 |
destUpdataProc = @destinationFile; |
|
| 58 |
bCopyUpdataProc = true; |
|
| 59 |
} |
|
| 60 |
else |
|
| 61 |
{
|
|
| 62 |
bRet = false; |
|
| 63 |
} |
|
| 64 |
continue; |
|
| 65 |
} |
|
| 66 |
|
|
| 67 |
// ハッシュ値を取得する |
|
| 68 |
// ----- コピー元ファイル |
|
| 69 |
string srcHash = CommonMotions.GetFileHashData(@sourceFile); |
|
| 70 |
// ----- コピー先ファイル |
|
| 71 |
string destHash = CommonMotions.GetFileHashData(@destinationFile); |
|
| 72 |
|
|
| 73 |
// ファイルが違う |
|
| 74 |
if (srcHash != destHash) |
|
| 75 |
{
|
|
| 76 |
// 更新時間を確認する |
|
| 77 |
// ----- コピー元ファイル |
|
| 78 |
DateTime srcTimeStamp = CommonMotions.GetFileTimeStamp(@sourceFile, 'U'); |
|
| 79 |
// ----- コピー先ファイル |
|
| 80 |
DateTime destTimeStamp = CommonMotions.GetFileTimeStamp(@destinationFile, 'U'); |
|
| 81 |
// コピー元ファイルが新しくない |
|
| 82 |
if (srcTimeStamp <= destTimeStamp) continue; |
|
| 83 |
|
|
| 84 |
// コピープロセスが新しい場合はここでコピー |
|
| 85 |
if (CommonDefine.s_UPDATECOPY_NAME == Procename) |
|
| 86 |
{
|
|
| 87 |
srcUpdataProc = @sourceFile; |
|
| 88 |
destUpdataProc = @destinationFile; |
|
| 89 |
bCopyUpdataProc = true; |
|
| 90 |
} |
|
| 91 |
else |
|
| 92 |
{
|
|
| 93 |
bRet = false; |
|
| 94 |
} |
|
| 95 |
} |
|
| 96 |
} |
|
| 97 |
|
|
| 98 |
// コピープロセスのコピー |
|
| 99 |
if (bCopyUpdataProc) |
|
| 100 |
{
|
|
| 101 |
File.Copy(@srcUpdataProc, @destUpdataProc, true); |
|
| 102 |
} |
|
| 103 |
|
|
| 104 |
return bRet; |
|
| 105 |
} |
|
| 106 |
catch (Exception ex) |
|
| 55 |
// 更新モジュール置き換え |
|
| 56 |
// 更新モジュールzipあるか存在チェック |
|
| 57 |
if (System.IO.Directory.Exists(tempPath + CommonDefine.s_UPDATE_MODULE)) |
|
| 107 | 58 |
{
|
| 108 |
logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
|
|
| 109 |
return false; |
|
| 59 |
// zip削除 |
|
| 60 |
System.IO.File.Delete(updateModuleZip); |
|
| 61 |
// ダウンロードファイル削除 |
|
| 62 |
System.IO.Directory.Delete(tempPath + CommonDefine.s_UPDATE_MODULE, true); |
|
| 110 | 63 |
} |
| 111 |
} |
|
| 112 |
#endregion |
|
| 64 |
// 更新モジュールZipダウンロード |
|
| 65 |
download( |
|
| 66 |
CommonDefine.s_FTP_SERVER_PATH + CommonDefine.s_UPDATE_MODULE + ".zip", updateModuleZip); |
|
| 67 |
// 更新モジュール解凍 |
|
| 68 |
ZipFile.ExtractToDirectory(updateModuleZip, tempPath); |
|
| 113 | 69 |
|
| 114 |
#region ファイルをコピーする |
|
| 115 |
/// <summary> |
|
| 116 |
/// ファイルのハッシュ値と更新日付を確認する |
|
| 117 |
/// </summary> |
|
| 118 |
/// <returns></returns> |
|
| 119 |
public static bool UpdateAndEnvFileCopy() |
|
| 120 |
{
|
|
| 121 |
try |
|
| 70 |
// コピー元(サーバー)ファイルリストを取得する |
|
| 71 |
string[] files = Directory.GetFiles(updateFilePath); |
|
| 72 |
foreach (string sourceFile in files) |
|
| 122 | 73 |
{
|
| 123 |
bool bRet = true; // 戻り値 |
|
| 124 |
string srcUpdataProc = string.Empty; // コピー元ファイルパス作成エリア |
|
| 125 |
string destUpdataProc = string.Empty; // コピー先ファイルパス作成エリア |
|
| 126 |
|
|
| 127 |
// デバック以外は使わない |
|
| 128 |
//return true; |
|
| 129 |
// 接続できなければ処理しない |
|
| 130 |
if (!Directory.Exists(CommonDefine.s_UPDATE_FILE_PATH)) return true; |
|
| 131 |
|
|
| 132 |
// コピー元(サーバー)ファイルリストを取得する |
|
| 133 |
string[] files = Directory.GetFiles(CommonDefine.s_UPDATE_FILE_PATH); |
|
| 134 |
foreach (string sourceFile in files) |
|
| 74 |
// ファイル名を取得する |
|
| 75 |
int spoint = sourceFile.LastIndexOf("\\") + 1;
|
|
| 76 |
string Procename = sourceFile.Substring(spoint); |
|
| 77 |
// コピー先(カレント)ファイル名作成 |
|
| 78 |
string destinationFile = System.Environment.CurrentDirectory + "\\" + Procename; |
|
| 79 |
// updatecopy.exeだったらコピー |
|
| 80 |
if (CommonDefine.s_UPDATECOPY_NAME == Procename) |
|
| 135 | 81 |
{
|
| 136 |
// ファイル名を取得する |
|
| 137 |
int spoint = sourceFile.LastIndexOf("\\") + 1;
|
|
| 138 |
string Procename = sourceFile.Substring(spoint); |
|
| 139 |
// コピー先(カレント)ファイル名作成 |
|
| 140 |
string destinationFile = System.Environment.CurrentDirectory + "\\" + Procename; |
|
| 141 |
|
|
| 142 |
// コピープロセスコピー |
|
| 143 |
if (!CommonDefine.s_UPDATECOPY_NAME.Equals(Procename)) continue; |
|
| 144 |
|
|
| 145 |
srcUpdataProc = @sourceFile; |
|
| 146 |
destUpdataProc = @destinationFile; |
|
| 147 |
|
|
| 148 |
File.Copy(@srcUpdataProc, @destUpdataProc, true); |
|
| 82 |
// コピー |
|
| 83 |
File.Copy(@sourceFile, @destinationFile, true); |
|
| 149 | 84 |
} |
| 85 |
} |
|
| 86 |
// zip削除 |
|
| 87 |
System.IO.File.Delete(tempPath + CommonDefine.s_UPDATE_MODULE + ".zip"); |
|
| 88 |
// ダウンロードファイル削除 |
|
| 89 |
System.IO.Directory.Delete(tempPath + CommonDefine.s_UPDATE_MODULE, true); |
|
| 150 | 90 |
|
| 151 |
return bRet; |
|
| 152 |
} |
|
| 153 |
catch (Exception ex) |
|
| 154 |
{
|
|
| 155 |
logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
|
|
| 156 |
return false; |
|
| 157 |
} |
|
| 91 |
return bRet; |
|
| 158 | 92 |
} |
| 159 | 93 |
#endregion |
| 160 | 94 |
} |
| trunk/src/ProcessManagement/ProcessManagement/Forms/ZMenu/FrmMenu.cs | ||
|---|---|---|
| 594 | 594 |
|
| 595 | 595 |
#region 変数 |
| 596 | 596 |
/// <summary> |
| 597 |
/// 起動チェックパラメータ(true:更新チェックあり、false:更新チェック無し) |
|
| 598 |
/// </summary> |
|
| 599 |
private bool m_KidouCheck = true; |
|
| 600 |
/// <summary> |
|
| 597 | 601 |
/// ログイン時終了フラグ |
| 598 | 602 |
/// </summary> |
| 599 | 603 |
private bool m_LoginEndFlg = false; |
| ... | ... | |
| 698 | 702 |
/// <summary> |
| 699 | 703 |
/// コンストラクタ |
| 700 | 704 |
/// </summary> |
| 701 |
public FrmMenu() |
|
| 705 |
public FrmMenu(string sKidouParam)
|
|
| 702 | 706 |
{
|
| 707 |
if (CommonDefine.s_KIDOU_PARAM != sKidouParam) |
|
| 708 |
{
|
|
| 709 |
m_KidouCheck = true; |
|
| 710 |
} |
|
| 711 |
else |
|
| 712 |
{
|
|
| 713 |
m_KidouCheck = false; |
|
| 714 |
} |
|
| 703 | 715 |
InitializeComponent(); |
| 704 | 716 |
logger.Info("Start Process Management System");
|
| 705 | 717 |
} |
| ... | ... | |
| 801 | 813 |
ClsCleanUp.CleanLogFile(); |
| 802 | 814 |
|
| 803 | 815 |
// 初期時システム更新確認処理 |
| 804 |
if (SystemUpdate.ExecNormal != InitUpdateProc())
|
|
| 816 |
if(m_KidouCheck)
|
|
| 805 | 817 |
{
|
| 806 |
m_LoginEndFlg = true; |
|
| 807 |
this.Close(); |
|
| 808 |
return; |
|
| 818 |
if (SystemUpdate.ExecNormal != InitUpdateProc()) |
|
| 819 |
{
|
|
| 820 |
m_LoginEndFlg = true; |
|
| 821 |
this.Close(); |
|
| 822 |
return; |
|
| 823 |
} |
|
| 809 | 824 |
} |
| 810 | 825 |
|
| 811 | 826 |
// タブコントロールをオーナードローへ変更 |
| trunk/src/ProcessManagement/ProcessManagement/ProcessManagement.csproj | ||
|---|---|---|
| 87 | 87 |
<SpecificVersion>False</SpecificVersion> |
| 88 | 88 |
<HintPath>lib\log4net.dll</HintPath> |
| 89 | 89 |
</Reference> |
| 90 |
<Reference Include="Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"> |
|
| 91 |
<EmbedInteropTypes>True</EmbedInteropTypes> |
|
| 92 |
</Reference> |
|
| 93 |
<Reference Include="Microsoft.Office.Interop.Word, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"> |
|
| 94 |
<EmbedInteropTypes>True</EmbedInteropTypes> |
|
| 95 |
</Reference> |
|
| 90 | 96 |
<Reference Include="Microsoft.VisualBasic" /> |
| 91 |
<Reference Include="Microsoft.VisualBasic.PowerPacks, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
|
|
| 97 |
<Reference Include="Microsoft.VisualBasic.PowerPacks.Vs, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
|
|
| 92 | 98 |
<Reference Include="Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=MSIL"> |
| 93 | 99 |
<HintPath>..\packages\Oracle.ManagedDataAccess.12.1.2400\lib\net40\Oracle.ManagedDataAccess.dll</HintPath> |
| 94 | 100 |
<Private>True</Private> |
| 95 | 101 |
</Reference> |
| 96 | 102 |
<Reference Include="System" /> |
| 97 | 103 |
<Reference Include="System.Core" /> |
| 104 |
<Reference Include="System.IO.Compression.FileSystem" /> |
|
| 98 | 105 |
<Reference Include="System.Windows.Forms.DataVisualization" /> |
| 99 | 106 |
<Reference Include="System.Xml.Linq" /> |
| 100 | 107 |
<Reference Include="System.Data" /> |
| ... | ... | |
| 969 | 976 |
<Compile Include="Forms\ZMenu\FrmMenuAuxiliary.cs"> |
| 970 | 977 |
<SubType>Form</SubType> |
| 971 | 978 |
</Compile> |
| 979 |
<Compile Include="IniFile.cs" /> |
|
| 972 | 980 |
<Compile Include="Program.cs" /> |
| 973 | 981 |
<Compile Include="Properties\AssemblyInfo.cs" /> |
| 974 | 982 |
<EmbeddedResource Include="Forms\CustomControls\DataGridViewEX.resx"> |
| ... | ... | |
| 1298 | 1306 |
<Content Include="Resources\kanriIcon.ico" /> |
| 1299 | 1307 |
<Content Include="rinen.jpg" /> |
| 1300 | 1308 |
</ItemGroup> |
| 1301 |
<ItemGroup> |
|
| 1302 |
<COMReference Include="Microsoft.Office.Core"> |
|
| 1303 |
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
|
|
| 1304 |
<VersionMajor>2</VersionMajor> |
|
| 1305 |
<VersionMinor>7</VersionMinor> |
|
| 1306 |
<Lcid>0</Lcid> |
|
| 1307 |
<WrapperTool>primary</WrapperTool> |
|
| 1308 |
<Isolated>False</Isolated> |
|
| 1309 |
<EmbedInteropTypes>True</EmbedInteropTypes> |
|
| 1310 |
</COMReference> |
|
| 1311 |
<COMReference Include="Microsoft.Office.Interop.Excel"> |
|
| 1312 |
<Guid>{00020813-0000-0000-C000-000000000046}</Guid>
|
|
| 1313 |
<VersionMajor>1</VersionMajor> |
|
| 1314 |
<VersionMinor>8</VersionMinor> |
|
| 1315 |
<Lcid>0</Lcid> |
|
| 1316 |
<WrapperTool>primary</WrapperTool> |
|
| 1317 |
<Isolated>False</Isolated> |
|
| 1318 |
<EmbedInteropTypes>True</EmbedInteropTypes> |
|
| 1319 |
</COMReference> |
|
| 1320 |
<COMReference Include="Microsoft.Office.Interop.Word"> |
|
| 1321 |
<Guid>{00020905-0000-0000-C000-000000000046}</Guid>
|
|
| 1322 |
<VersionMajor>8</VersionMajor> |
|
| 1323 |
<VersionMinor>6</VersionMinor> |
|
| 1324 |
<Lcid>0</Lcid> |
|
| 1325 |
<WrapperTool>primary</WrapperTool> |
|
| 1326 |
<Isolated>False</Isolated> |
|
| 1327 |
<EmbedInteropTypes>True</EmbedInteropTypes> |
|
| 1328 |
</COMReference> |
|
| 1329 |
<COMReference Include="VBIDE"> |
|
| 1330 |
<Guid>{0002E157-0000-0000-C000-000000000046}</Guid>
|
|
| 1331 |
<VersionMajor>5</VersionMajor> |
|
| 1332 |
<VersionMinor>3</VersionMinor> |
|
| 1333 |
<Lcid>0</Lcid> |
|
| 1334 |
<WrapperTool>primary</WrapperTool> |
|
| 1335 |
<Isolated>False</Isolated> |
|
| 1336 |
<EmbedInteropTypes>True</EmbedInteropTypes> |
|
| 1337 |
</COMReference> |
|
| 1338 |
</ItemGroup> |
|
| 1339 | 1309 |
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> |
| 1340 | 1310 |
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. |
| 1341 | 1311 |
Other similar extension points exist, see Microsoft.Common.targets. |
| trunk/src/ProcessManagement/ProcessManagement/Program.cs | ||
|---|---|---|
| 29 | 29 |
/// アプリケーションのメイン エントリ ポイントです。 |
| 30 | 30 |
/// </summary> |
| 31 | 31 |
[STAThread] |
| 32 |
static void Main() |
|
| 32 |
// ▼自動更新VPS対応▼ |
|
| 33 |
static void Main(string[] args) |
|
| 34 |
// ▲自動更新VPS対応▲ |
|
| 33 | 35 |
{
|
| 34 | 36 |
try |
| 35 | 37 |
{
|
| ... | ... | |
| 59 | 61 |
// } |
| 60 | 62 |
//} |
| 61 | 63 |
|
| 62 |
Application.Run(new FrmMenu()); |
|
| 64 |
// 起動パラメータ引渡 |
|
| 65 |
if (args.Length == 0 || |
|
| 66 |
CommonDefine.s_KIDOU_PARAM != args[0]) |
|
| 67 |
{
|
|
| 68 |
Application.Run(new FrmMenu(null)); |
|
| 69 |
} |
|
| 70 |
else |
|
| 71 |
{
|
|
| 72 |
Application.Run(new FrmMenu(args[0])); |
|
| 73 |
} |
|
| 63 | 74 |
} |
| 64 | 75 |
catch (Exception ex) |
| 65 | 76 |
{
|
他の形式にエクスポート: Unified diff