메뉴얼 파일 압축 해제 관련 기능 추가

This commit is contained in:
2025-12-11 00:50:51 +09:00
parent 132ddc6495
commit 1fd7c25c8d
11 changed files with 815 additions and 385 deletions

View File

@@ -31,6 +31,8 @@
<ApplicationIcon>002.ico</ApplicationIcon> <ApplicationIcon>002.ico</ApplicationIcon>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion> <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<PublishUrl>ftp://tindevil.com/www/mynetapp/t4/</PublishUrl> <PublishUrl>ftp://tindevil.com/www/mynetapp/t4/</PublishUrl>
<Install>true</Install> <Install>true</Install>
<InstallFrom>Web</InstallFrom> <InstallFrom>Web</InstallFrom>
@@ -51,15 +53,13 @@
<ApplicationVersion>1.0.0.%2a</ApplicationVersion> <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust> <UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled> <BootstrapperEnabled>true</BootstrapperEnabled>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<DefineDebug>true</DefineDebug> <DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace> <DefineTrace>true</DefineTrace>
<OutputPath>..\..\..\..\..\eco2\debug_2016\</OutputPath> <OutputPath>c:\eco2\debug_2016\</OutputPath>
<DocumentationFile> <DocumentationFile>
</DocumentationFile> </DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42353,42354,42355</NoWarn> <NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42353,42354,42355</NoWarn>
@@ -128,6 +128,8 @@
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
@@ -190,6 +192,12 @@
<Compile Include="Forms_Basic\Frm_WebManual.vb"> <Compile Include="Forms_Basic\Frm_WebManual.vb">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Forms_Basic\Frm_WwwrootExtract.Designer.vb">
<DependentUpon>Frm_WwwrootExtract.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\Frm_WwwrootExtract.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Basic\fSelectWeatherGroup.Designer.vb"> <Compile Include="Forms_Basic\fSelectWeatherGroup.Designer.vb">
<DependentUpon>fSelectWeatherGroup.vb</DependentUpon> <DependentUpon>fSelectWeatherGroup.vb</DependentUpon>
</Compile> </Compile>
@@ -517,6 +525,9 @@
<EmbeddedResource Include="Forms_Basic\Frm_WebManual.resx"> <EmbeddedResource Include="Forms_Basic\Frm_WebManual.resx">
<DependentUpon>Frm_WebManual.vb</DependentUpon> <DependentUpon>Frm_WebManual.vb</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Forms_Basic\Frm_WwwrootExtract.resx">
<DependentUpon>Frm_WwwrootExtract.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Basic\Frm_Work.resx"> <EmbeddedResource Include="Forms_Basic\Frm_Work.resx">
<DependentUpon>Frm_Work.vb</DependentUpon> <DependentUpon>Frm_Work.vb</DependentUpon>
<SubType>Designer</SubType> <SubType>Designer</SubType>
@@ -777,7 +788,7 @@
<ItemGroup> <ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5"> <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible> <Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> <ProductName>.NET Framework Client Profile</ProductName>
<Install>false</Install> <Install>false</Install>
</BootstrapperPackage> </BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0"> <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">

View File

@@ -22,6 +22,7 @@ Partial Class Frm_WebManual
'코드 편집기에서는 수정하지 마세요. '코드 편집기에서는 수정하지 마세요.
<System.Diagnostics.DebuggerStepThrough()> _ <System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent() Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Frm_WebManual))
Me.WebView21 = New Microsoft.Web.WebView2.WinForms.WebView2() Me.WebView21 = New Microsoft.Web.WebView2.WinForms.WebView2()
CType(Me.WebView21, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.WebView21, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout() Me.SuspendLayout()
@@ -44,6 +45,7 @@ Partial Class Frm_WebManual
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1350, 700) Me.ClientSize = New System.Drawing.Size(1350, 700)
Me.Controls.Add(Me.WebView21) Me.Controls.Add(Me.WebView21)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "Frm_WebManual" Me.Name = "Frm_WebManual"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "사용자 매뉴얼" Me.Text = "사용자 매뉴얼"

View File

@@ -117,4 +117,24 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAEBAAAAAAIABsAwAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAQAAAAEAgGAAAAH/P/YQAAAzNJ
REFUeJxVk99PHHUUxT8zO7OzC7vsLrsgQtYSaySxoUWk9oFSY1Otxvhg/J0YTXnwwUSJiX+AL/wDRquJ
0fbBVPvSaGJsQ7WKlMYallBMoA0oQmAJS9lld2WYme/3O1+zpjX0Pt6ce+7JPfcYWmv21sjk8BDwLnAY
aAMsoApc16E+/dHQmUt78cZdgpHJ4QbwLPDS8/kTTibeRs1txg1AKg/JBj+tX5RKqstSqle+ePabf/4n
GJkctoGfB3IHBp/OP0nNc/AJWKwZRLXDlhuiZUAcl3V/gqni1KwU8ti5l7+tmneUnO3PPjx4tHOAsgoQ
poGUJrsyikuUsu9Q8uKsVm0eSDzOQEfPwcAXX/+n4L2rp44CVz449JY9K3fwDGhWCXCzrO3Y+MLg5kod
woD7Osq055Z4LNbFh99/qqSQLzYUvH+y84hd8naoI1FhjlaVZu62QaUON5brBE4Fa/8fVLIF5lWRuY0V
Xu09Hgl88U7jcIfzLV3MuEU2YyaPRPYTIlkuBXjeLqkOTa11jMVwG3xNWjosbPqc6O5H+LK3QZBtsppZ
douUfJdk04NsB0kqlZBUm0d7xmVT9VHzb+DoOvXbW5S3m0jEk4hApi2ttWFoCPwamjyWrbj4m8CIJ1hf
lJi6hc62XZL1IWprAo8pRLAEWiOlNCwlw3ItqHVlI2mSsUOsblp4wiYac4i1x/nzry2839MQeqTabdLN
XaQiJSo7VZQMq6YUcvrv8goPNeUpliYJ7TWiER/huQhhEU1kcFpjWDET21BEgk0678+xVFxquDhvikB+
fOHmuNyXaMNy16huXSOT8bGkj21oHDOCFQRk8quk2n/F3L1FX76X0z9eaLzw5+aXz50fC3zxw9jcOE90
9ZGKNJNJhKSiipaoR9L2SccFrdYEZnGZ/gM9XC6MN7aPF0ZnzjVcQPjijV8WZq76u8HBk48e41bJIlLV
SKOOCE1IKPL7uunp7ebK9DUuzV5fAF6/J0zPfHI8KYU8L4V66s3BUxaqA62bMEyDXKrGRnmaz8a+U8AE
8FphdGbjHoK7NTh65AUl1dtKhb2hCjN32o04zwNnCqMzX+0d+BfEDZRfNsnANgAAAABJRU5ErkJggg==
</value>
</data>
</root> </root>

View File

@@ -0,0 +1,92 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Frm_WwwrootExtract
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.lblStatus = New System.Windows.Forms.Label()
Me.progressBar = New System.Windows.Forms.ProgressBar()
Me.lblPercentage = New System.Windows.Forms.Label()
Me.lblTitle = New System.Windows.Forms.Label()
Me.SuspendLayout()
'
'lblStatus
'
Me.lblStatus.AutoSize = True
Me.lblStatus.Location = New System.Drawing.Point(30, 90)
Me.lblStatus.Name = "lblStatus"
Me.lblStatus.Size = New System.Drawing.Size(113, 12)
Me.lblStatus.TabIndex = 0
Me.lblStatus.Text = "압축 해제 준비 중..."
'
'progressBar
'
Me.progressBar.Location = New System.Drawing.Point(30, 110)
Me.progressBar.Name = "progressBar"
Me.progressBar.Size = New System.Drawing.Size(440, 30)
Me.progressBar.TabIndex = 1
'
'lblPercentage
'
Me.lblPercentage.AutoSize = True
Me.lblPercentage.Font = New System.Drawing.Font("굴림", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte))
Me.lblPercentage.Location = New System.Drawing.Point(30, 150)
Me.lblPercentage.Name = "lblPercentage"
Me.lblPercentage.Size = New System.Drawing.Size(23, 12)
Me.lblPercentage.TabIndex = 2
Me.lblPercentage.Text = "0%"
'
'lblTitle
'
Me.lblTitle.AutoSize = True
Me.lblTitle.Font = New System.Drawing.Font("굴림", 11.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte))
Me.lblTitle.Location = New System.Drawing.Point(30, 30)
Me.lblTitle.Name = "lblTitle"
Me.lblTitle.Size = New System.Drawing.Size(239, 15)
Me.lblTitle.TabIndex = 3
Me.lblTitle.Text = "매뉴얼 파일 압축 해제 중입니다"
'
'Frm_WwwrootExtract
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(500, 200)
Me.Controls.Add(Me.lblTitle)
Me.Controls.Add(Me.lblPercentage)
Me.Controls.Add(Me.progressBar)
Me.Controls.Add(Me.lblStatus)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "Frm_WwwrootExtract"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "압축 해제 중"
Me.TopMost = True
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents lblStatus As Label
Friend WithEvents progressBar As ProgressBar
Friend WithEvents lblPercentage As Label
Friend WithEvents lblTitle As Label
End Class

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,101 @@
Imports System.IO
Imports System.IO.Compression
Imports System.Threading.Tasks
Public Class Frm_WwwrootExtract
Private Sub Frm_WwwrootExtract_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Show()
Application.DoEvents()
' 폼이 로드될 때 자동으로 압축 해제 시작
ExtractWwwrootAsync()
End Sub
Private Async Sub ExtractWwwrootAsync()
Try
Dim extractPath As String = Path.Combine(Application.StartupPath, "wwwroot")
Dim zipPath As String = Path.Combine(extractPath, "wwwroot.zip")
' ZIP 파일 존재 여부 확인
If Not File.Exists(zipPath) Then
lblStatus.Text = "wwwroot.zip 파일을 찾을 수 없습니다."
MessageBox.Show("wwwroot.zip 파일이 존재하지 않습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error)
Me.DialogResult = DialogResult.Cancel
Me.Close()
Return
End If
' 압축 해제 작업을 별도 Task로 실행
Await Task.Run(Sub()
ExtractZipWithProgress(zipPath, extractPath)
End Sub)
' 완료
lblStatus.Text = "압축 해제 완료!"
lblPercentage.Text = "100%"
progressBar.Value = 100
Application.DoEvents()
' 잠시 대기 후 폼 닫기
Await Task.Delay(500)
Me.DialogResult = DialogResult.OK
Me.Close()
Catch ex As Exception
lblStatus.Text = "오류 발생: " & ex.Message
MessageBox.Show("압축 해제 중 오류가 발생했습니다: " & ex.Message, "오류", MessageBoxButtons.OK, MessageBoxIcon.Error)
Me.DialogResult = DialogResult.Cancel
Me.Close()
End Try
End Sub
Private Sub ExtractZipWithProgress(zipPath As String, extractPath As String)
Using archive As ZipArchive = ZipFile.OpenRead(zipPath)
Dim totalEntries As Integer = archive.Entries.Count
Dim currentEntry As Integer = 0
For Each entry As ZipArchiveEntry In archive.Entries
currentEntry += 1
' UI 업데이트 (UI 스레드에서 실행)
Me.Invoke(Sub()
Dim percentage As Integer = CInt((currentEntry / totalEntries) * 100)
progressBar.Value = percentage
lblPercentage.Text = percentage.ToString() & "%"
lblStatus.Text = $"압축 해제 중... ({currentEntry}/{totalEntries}) {entry.Name}"
Application.DoEvents()
End Sub)
' 전체 경로 생성
Dim destinationPath As String = Path.Combine(extractPath, entry.FullName)
' 디렉토리 항목인 경우
If entry.FullName.EndsWith("/") OrElse entry.FullName.EndsWith("\") Then
Directory.CreateDirectory(destinationPath)
Continue For
End If
' 파일의 디렉토리가 없으면 생성
Dim directoryPath As String = Path.GetDirectoryName(destinationPath)
If Not Directory.Exists(directoryPath) Then
Directory.CreateDirectory(directoryPath)
End If
' 파일 추출
entry.ExtractToFile(destinationPath, True)
Next
End Using
End Sub
Private Sub Frm_WwwrootExtract_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
' 압축 해제가 진행 중일 때는 폼을 닫을 수 없도록 설정 (사용자가 X 버튼을 누른 경우)
If e.CloseReason = CloseReason.UserClosing AndAlso progressBar.Value < 100 Then
e.Cancel = True
MessageBox.Show("압축 해제가 진행 중입니다. 잠시만 기다려 주세요.", "알림", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub
End Class

View File

@@ -91,7 +91,7 @@ Partial Class MdiMain
Me.CloseAllToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.CloseAllToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.ArrangeIconsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ArrangeIconsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.btcustomprofile = New System.Windows.Forms.ToolStripMenuItem() Me.btcustomprofile = New System.Windows.Forms.ToolStripMenuItem()
Me.ManualToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.btManual = New System.Windows.Forms.ToolStripMenuItem()
Me.TreeView1 = New System.Windows.Forms.TreeView() Me.TreeView1 = New System.Windows.Forms.TreeView()
Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.그룹추가ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.그룹추가ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
@@ -179,7 +179,7 @@ Partial Class MdiMain
'MenuStrip1 'MenuStrip1
' '
Me.MenuStrip1.Font = New System.Drawing.Font("돋움", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) Me.MenuStrip1.Font = New System.Drawing.Font("돋움", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte))
Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ReportToolStripMenuItem, Me.건물개요ToolStripMenuItem, Me.환경설정ToolStripMenuItem, Me.bt_계산결과, Me.결과그래프ToolStripMenuItem, Me.정보ToolStripMenuItem1, Me.bt_etc, Me.WindowsMenu, Me.btcustomprofile, Me.ManualToolStripMenuItem}) Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ReportToolStripMenuItem, Me.건물개요ToolStripMenuItem, Me.환경설정ToolStripMenuItem, Me.bt_계산결과, Me.결과그래프ToolStripMenuItem, Me.정보ToolStripMenuItem1, Me.bt_etc, Me.WindowsMenu, Me.btcustomprofile, Me.btManual})
Me.MenuStrip1.Location = New System.Drawing.Point(0, 0) Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
Me.MenuStrip1.MdiWindowListItem = Me.WindowsMenu Me.MenuStrip1.MdiWindowListItem = Me.WindowsMenu
Me.MenuStrip1.Name = "MenuStrip1" Me.MenuStrip1.Name = "MenuStrip1"
@@ -555,12 +555,13 @@ Partial Class MdiMain
Me.btcustomprofile.Text = "커스텀프로필" Me.btcustomprofile.Text = "커스텀프로필"
Me.btcustomprofile.Visible = False Me.btcustomprofile.Visible = False
' '
'ManualToolStripMenuItem 'btManual
' '
Me.ManualToolStripMenuItem.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right Me.btManual.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right
Me.ManualToolStripMenuItem.Name = "ManualToolStripMenuItem" Me.btManual.Image = CType(resources.GetObject("btManual.Image"), System.Drawing.Image)
Me.ManualToolStripMenuItem.Size = New System.Drawing.Size(59, 20) Me.btManual.Name = "btManual"
Me.ManualToolStripMenuItem.Text = "Manual" Me.btManual.Size = New System.Drawing.Size(69, 20)
Me.btManual.Text = "설명서"
' '
'TreeView1 'TreeView1
' '
@@ -829,5 +830,5 @@ Partial Class MdiMain
Friend WithEvents BatchUpdateProfileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents BatchUpdateProfileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents btcustomprofile As System.Windows.Forms.ToolStripMenuItem Friend WithEvents btcustomprofile As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents btMacro2 As System.Windows.Forms.ToolStripMenuItem Friend WithEvents btMacro2 As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ManualToolStripMenuItem As ToolStripMenuItem Friend WithEvents btManual As ToolStripMenuItem
End Class End Class

View File

@@ -248,6 +248,27 @@
b6AQ75sCVnsVfDHIceuzCVkfYyw4KQ2Mqa8QnWkVq15THp6eXNzdMla0d1nuyiIoVKNTHJMGrFWX2Jhu b6AQ75sCVnsVfDHIceuzCVkfYyw4KQ2Mqa8QnWkVq15THp6eXNzdMla0d1nuyiIoVKNTHJMGrFWX2Jhu
IjLRwPp4HeGRGrEaFNQEhh/it1TSde9IOmC327HZbAyVX+Bd6TnxUKYHZ+hVnsKQfwL9/eNoc4/SKT9M IjLRwPp4HeGRGrEaFNQEhh/it1TSde9IOmC327HZbAyVX+Bd6TnxUKYHZ+hVnsKQfwL9/eNoc4/SKT9M
h+wQKpVKnLQN/mV+AQV66PCS6TFTAAAAAElFTkSuQmCC h+wQKpVKnLQN/mV+AQV66PCS6TFTAAAAAElFTkSuQmCC
</value>
</data>
<data name="btManual.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANbSURBVDhPZZPdT1MHHIZ7sd3N7HL7Lxq7uUUzZjYS
nC7olATkcxwXyiD0RMKGWAMBJGpEJhhl0sKGIIWC7FDoh2C/gAO1UqCFQqHUwpA5YGMYN9wyzJ6lZFvQ
Xbx3v+f53byvAlDsjigLcaIsdIqysCjKwm+iLPwhysKaKAu9mqHsj16+3w2+IsrC7Rhw7/s2fOsDOJdG
MIdH6Ak5uBMykOfM3FYPpFlPWVNee0EgysKroizILXNXWN0aJ7wRZHpjAmlxEkt0lpZgkFv+CTr9MnXe
i2RKSYHUzmOv7xa0NYcuEn3qZvaph5nNGSbX/BgWZuiKRqgdX6D6foivBr1IMw7qPFqSWo9YdwSiLLwn
ysKfy7+6MW9auPPEgm1jENujII1z89yYDqOxjKPp81A1ZkG3eJ3xHyUS9QnPD9d/eCwm6LZEb+L7yUL7
pgnjL1686wFqJmeoHptHbR4n126ncFZHUbSSwoiWVn8dt+9fIv5qXH9MsDz1cx8ty3pq1puwbQTxrPsR
+ydRm3x86R0jd6GYxHk1iaEcMqcLKLtXxNBCG+9f2v84JtiKPHFyfq4CzcIZdD+4aF/0kdnxgALHENXh
u2TPGTgYOEOCP59P7KkUdH3GxEov+yv3PVNohrOfPdx0UhoooiBQyzdLdrLaPWT1TJPUMIpoH0UbkNDI
Zj41SqQYz5HbmsbEIxP7yvb+rsh3Za1MrvVQGzzP5YiLyrFhklt8ZEhh0qUIH+u8xF9wEV9l44Sun1Nt
9RQbcnDMtaDSKlcV6oG0Xil0DXO0mdOjVZT7O8hoGyGl3U9y5xLHDWGO3PRw6Eo/KXorOd9WUOs6S6Oz
IiZwKQRzckKmlLQ9vW7hC3sehQ4RjdVJequX9K5FTnY85Oi1QU4am1CbSsitT8MdMcTgv1RaZdpOkVI6
jppq3MX0hRood5+lbMhOvnGUPFOInO5ZsvR28ruz+fzrVBoGKzhnzN35/l8TT9w6vCdRnxC4YDuNZ/U7
mqfcVPSNUGp+QInko6S9nxu+cuzhZrQd6hgcVmmVb74wpkPXP9gTfzXOevDyge2mET1NQ300DjpoGnZi
mupB5y6Lgc9jn1Va5Rv/W+O/OVD1zvF3y9+yvV26d0WlVW79k8cqrdKh0iozXr7/G9y9vOYtj3fFAAAA
AElFTkSuQmCC
</value> </value>
</data> </data>
<metadata name="ContextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="ContextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@@ -330,73 +351,73 @@
<data name="ToolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ToolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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
2FiAVmb3aQAAAABJRU5ErkJggg== WG90MeopAAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<data name="ToolStripButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ToolStripButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">

View File

@@ -86,7 +86,8 @@ Public Class MdiMain
Refresh_info() Refresh_info()
'// wwwroot 폴더 확인 및 압축 해제
CheckAndExtractWwwroot()
Read_SEtting() '//환경설정을 가져온다. Splah를 변경했따. Read_SEtting() '//환경설정을 가져온다. Splah를 변경했따.
Read_FilHistory() '//파일사용내역 Read_FilHistory() '//파일사용내역
@@ -291,6 +292,35 @@ Public Class MdiMain
End Sub End Sub
Private Sub CheckAndExtractWwwroot()
Try
' wwwroot 폴더 경로 확인
Dim wwwrootPath As String = Path.Combine(Application.StartupPath, "wwwroot")
Dim indexHtmlPath As String = Path.Combine(wwwrootPath, "index.html")
Dim zipPath As String = Path.Combine(wwwrootPath, "wwwroot.zip")
' wwwroot 폴더가 없거나 index.html이 없는 경우
If (Not Directory.Exists(wwwrootPath) OrElse Not File.Exists(indexHtmlPath)) Then
' wwwroot.zip 파일이 존재하는지 확인
If File.Exists(zipPath) Then
' 압축 해제 폼 표시
Dim extractForm As New Frm_WwwrootExtract()
extractForm.ShowDialog()
' 압축 해제가 실패한 경우
If extractForm.DialogResult <> DialogResult.OK Then
MessageBox.Show("매뉴얼 파일 압축 해제에 실패했습니다." & vbCrLf & "일부 기능이 제한될 수 있습니다.",
"경고", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End If
End If
Catch ex As Exception
' 오류가 발생해도 프로그램은 계속 실행
MessageBox.Show("매뉴얼 파일 확인 중 오류가 발생했습니다: " & ex.Message,
"경고", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End Try
End Sub
Private Sub bt_fileopen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Private Sub bt_fileopen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub End Sub
@@ -3968,7 +3998,7 @@ ENDSTAT: '//오류발생시 강제종료를 위한 분기문
Dim frmManual As Frm_WebManual = Nothing Dim frmManual As Frm_WebManual = Nothing
Private Sub ManualToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ManualToolStripMenuItem.Click Private Sub ManualToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles btManual.Click
Try Try
If frmManual Is Nothing OrElse frmManual.IsDisposed Then If frmManual Is Nothing OrElse frmManual.IsDisposed Then
frmManual = New Frm_WebManual() frmManual = New Frm_WebManual()

File diff suppressed because it is too large Load Diff

View File

@@ -1125,6 +1125,12 @@
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_EDDA88464F3D4868A4D31EB154F946A3"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_EEFCE67CA4744ADF98423F68123415AC" "MsmKey" = "8:_EEFCE67CA4744ADF98423F68123415AC"
"OwnerKey" = "8:_UNDEFINED" "OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
@@ -1186,25 +1192,7 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_UNDEFINED" "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_DF16200C7C9B40998C022F2E37D1E143" "OwnerKey" = "8:_F7DF6157CD83D46091E6404B3E2CE830"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_4608D921DC658CD173C039AF16C5E283"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_59B3512FD7C9D2430BF7B3C6379B9C9D"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_36E293D174759AFAAD42CF70AA63402C"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@@ -1216,25 +1204,13 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_UNDEFINED" "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_29FE169CCEBDEB4C07246AF3E1D7D1EF" "OwnerKey" = "8:_DF16200C7C9B40998C022F2E37D1E143"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_UNDEFINED" "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_F7DF6157CD83D46091E6404B3E2CE830" "OwnerKey" = "8:_BFCB09EF0CA43B0269B207A4DB42D1BF"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_691C9DA50302E0464D0E64E97C1242A2"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_4B290A29E53110D5B83008A4DD0873A2"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@@ -1246,7 +1222,37 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_UNDEFINED" "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_BFCB09EF0CA43B0269B207A4DB42D1BF" "OwnerKey" = "8:_691C9DA50302E0464D0E64E97C1242A2"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_59B3512FD7C9D2430BF7B3C6379B9C9D"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_4B290A29E53110D5B83008A4DD0873A2"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_4608D921DC658CD173C039AF16C5E283"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_36E293D174759AFAAD42CF70AA63402C"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_29FE169CCEBDEB4C07246AF3E1D7D1EF"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
} }
@@ -1276,11 +1282,6 @@
"ComponentsUrl" = "8:" "ComponentsUrl" = "8:"
"Items" "Items"
{ {
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.0"
{
"Name" = "8:Microsoft .NET Framework 4(x86 및 x64)"
"ProductCode" = "8:.NETFramework,Version=v4.0"
}
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.8" "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.8"
{ {
"Name" = "8:Microsoft .NET Framework 4.8(x86 및 x64)" "Name" = "8:Microsoft .NET Framework 4.8(x86 및 x64)"
@@ -5110,6 +5111,26 @@
"IsDependency" = "11:TRUE" "IsDependency" = "11:TRUE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_EDDA88464F3D4868A4D31EB154F946A3"
{
"SourcePath" = "8:C:\\eco2\\debug_2016\\wwwroot\\wwwroot.zip"
"TargetName" = "8:wwwroot.zip"
"Tag" = "8:"
"Folder" = "8:_0824271A37F9420DBDD958E10624F020"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_EEFCE67CA4744ADF98423F68123415AC" "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_EEFCE67CA4744ADF98423F68123415AC"
{ {
"SourcePath" = "8:C:\\eco2\\debug_2016\\WebView2Runtime\\msedge_elf.dll" "SourcePath" = "8:C:\\eco2\\debug_2016\\WebView2Runtime\\msedge_elf.dll"
@@ -5317,6 +5338,17 @@
"Property" = "8:TARGETDIR" "Property" = "8:TARGETDIR"
"Folders" "Folders"
{ {
"{9EF0B969-E518-4E46-987F-47570745A589}:_0824271A37F9420DBDD958E10624F020"
{
"Name" = "8:wwwroot"
"AlwaysCreate" = "11:FALSE"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Property" = "8:_B229286B7A1047BBB6C5EF3FC994B34D"
"Folders"
{
}
}
"{9EF0B969-E518-4E46-987F-47570745A589}:_A02FAE1984434D0C9BCF4CCA745960F5" "{9EF0B969-E518-4E46-987F-47570745A589}:_A02FAE1984434D0C9BCF4CCA745960F5"
{ {
"Name" = "8:Data" "Name" = "8:Data"