diff --git a/CompressToExe/CompressToExe.csproj b/CompressToExe/CompressToExe.csproj new file mode 100644 index 00000000..b57c89e6 --- /dev/null +++ b/CompressToExe/CompressToExe.csproj @@ -0,0 +1,11 @@ + + + + WinExe + net6.0-windows + enable + true + enable + + + \ No newline at end of file diff --git a/CompressToExe/Form1.Designer.cs b/CompressToExe/Form1.Designer.cs new file mode 100644 index 00000000..b758a303 --- /dev/null +++ b/CompressToExe/Form1.Designer.cs @@ -0,0 +1,39 @@ +namespace CompressToExe +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Text = "Form1"; + } + + #endregion + } +} \ No newline at end of file diff --git a/CompressToExe/Form1.cs b/CompressToExe/Form1.cs new file mode 100644 index 00000000..b5803f23 --- /dev/null +++ b/CompressToExe/Form1.cs @@ -0,0 +1,10 @@ +namespace CompressToExe +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + } +} \ No newline at end of file diff --git a/CompressToExe/Program.cs b/CompressToExe/Program.cs new file mode 100644 index 00000000..7a17e829 --- /dev/null +++ b/CompressToExe/Program.cs @@ -0,0 +1,17 @@ +namespace CompressToExe +{ + internal static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + // To customize application configuration such as set high DPI settings or default font, + // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); + Application.Run(new Form1()); + } + } +} \ No newline at end of file diff --git a/EI_Image_Viewer/EI_Image_Viewer.vdproj b/EI_Image_Viewer/EI_Image_Viewer.vdproj new file mode 100644 index 00000000..c5764318 --- /dev/null +++ b/EI_Image_Viewer/EI_Image_Viewer.vdproj @@ -0,0 +1,723 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:EI_Image_Viewer" +"LanguageId" = "3:2052" +"CodePage" = "3:936" +"UILanguageId" = "3:2052" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_671ACE803849427ABF43662CDE6B54E3" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_6BD8B282CE934C3AAD3841638BE9D51E" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\EI_Image_Viewer.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Release\\EI_Image_Viewer.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + } + } + "Deployable" + { + "CustomAction" + { + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + } + } + "File" + { + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6BD8B282CE934C3AAD3841638BE9D51E" + { + "SourcePath" = "8:D:\\Soft\\WX\\WeChat Files\\WeChat Files\\wxid_r2imdzb7j3q922\\FileStorage\\File\\2023-04\\favicon.ico" + "TargetName" = "8:favicon.ico" + "Tag" = "8:" + "Folder" = "8:_FC6A2494EDBE4963A84EBD88E04B3F04" + "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:" + } + } + "FileType" + { + } + "Folder" + { + "{1525181F-901A-416C-8A58-119130FE478E}:_8D81C358540F4384A07E881ECA670B06" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_CEB3ABC1E0034A319A55466553922586" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_FC6A2494EDBE4963A84EBD88E04B3F04" + { + "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]" + "Name" = "8:#1925" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:2052" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:EI_Image_Viewer" + "ProductCode" = "8:{E8F96E3C-EA54-429B-BB58-B5ED2D6FCA8C}" + "PackageCode" = "8:{908AC8AE-E525-45D8-A456-9C695A3B4D9C}" + "UpgradeCode" = "8:{DAEA1B25-CE0C-4ED7-A6E1-A0E32F09B34B}" + "AspNetVersion" = "8:4.0.30319.0" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:FALSE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:FALSE" + "ProductVersion" = "8:1.0.0" + "Manufacturer" = "8:微软中国" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:" + "Title" = "8:EI_Image_Viewer" + "Subject" = "8:" + "ARPCONTACT" = "8:微软中国" + "Keywords" = "8:" + "ARPCOMMENTS" = "8:" + "ARPURLINFOABOUT" = "8:" + "ARPPRODUCTICON" = "8:" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:0" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_4B3A8DDB66C14C26B1FDEB73E654D73E" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_D4DC14C1806A4415B3D158086D20A384" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_FDC39226C9AF424BA1A2EB9CB480C9AF" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_EA384AA6FD9B43348966A96518AFEDCB" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_36E629868FD94281A9512B653A68C76E" + { + "Name" = "8:Shortcut to 发布项 from Start (Active)" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_671ACE803849427ABF43662CDE6B54E3" + "Folder" = "8:_FC6A2494EDBE4963A84EBD88E04B3F04" + "WorkingFolder" = "8:_FC6A2494EDBE4963A84EBD88E04B3F04" + "Icon" = "8:_6BD8B282CE934C3AAD3841638BE9D51E" + "Feature" = "8:" + } + } + "UserInterface" + { + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_1CCA0CBF4AED4FC48560F2AF5AAD31B6" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_36E70F23303C475EAD3030D279A6D0AE" + { + "Sequence" = "3:200" + "DisplayName" = "8:安装文件夹" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D5D84CAA84CE405B84FCD1F603BF5A04" + { + "Sequence" = "3:100" + "DisplayName" = "8:欢迎使用" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_F2AE58A5FFC9409F8C3BC02EC666A4E1" + { + "Sequence" = "3:300" + "DisplayName" = "8:确认安装" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_621AF3658AF94FB7B1CDFF5DF1609491" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_818FD021D326496AB2F1D52C8713ACE1" + { + "Sequence" = "3:100" + "DisplayName" = "8:已完成" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_8B8A18872BD040FF9FD618D775AFD701" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C476041D34EB4C48B4BBF6EE9B23EB0B" + { + "Sequence" = "3:100" + "DisplayName" = "8:进度" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_A83D160A087845238F7A677809EDA0C8" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_AA1E9CA25272498B836014BB47156D90" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_251EAFC6E38642FBB5C702BE6B1FDB30" + { + "Sequence" = "3:100" + "DisplayName" = "8:进度" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_C9A8427C4B4A483095D2544D9175A5E4" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_70E6B3E76711448496915BDC2763B21F" + { + "Sequence" = "3:100" + "DisplayName" = "8:欢迎使用" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_978CF68169D34FF7A0C440DCE87C41F7" + { + "Sequence" = "3:300" + "DisplayName" = "8:确认安装" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E17D627579F34787981DEE6B595B7F1E" + { + "Sequence" = "3:200" + "DisplayName" = "8:安装文件夹" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "InstallAllUsersVisible" + { + "Name" = "8:InstallAllUsersVisible" + "DisplayName" = "8:#1059" + "Description" = "8:#1159" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_CF08905C7B824DAA802D43F4223E1BA2" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_D2E0AB446E6241D8ABE6FD9CD0E01163" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_315C6B4D72B74607BEDFF0BCFC8DD40F" + { + "Sequence" = "3:100" + "DisplayName" = "8:已完成" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "UpdateText" + { + "Name" = "8:UpdateText" + "DisplayName" = "8:#1058" + "Description" = "8:#1158" + "Type" = "3:15" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1258" + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + } + "MergeModule" + { + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_671ACE803849427ABF43662CDE6B54E3" + { + "SourcePath" = "8:..\\Start\\obj\\Debug\\net6.0-windows\\apphost.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_FC6A2494EDBE4963A84EBD88E04B3F04" + "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:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:PublishItems" + "OutputProjectGuid" = "8:{D96F4B52-359C-43C9-8110-BAD1437F9280}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +} diff --git a/IRaCIS.Core.API/Program.cs b/IRaCIS.Core.API/Program.cs index 10a98ac4..e58662a7 100644 --- a/IRaCIS.Core.API/Program.cs +++ b/IRaCIS.Core.API/Program.cs @@ -76,50 +76,50 @@ namespace IRaCIS.Core.API #region ֤ - //if (!File.Exists($@"C:\ProgramData\.xingcang\config.json")) - //{ - // Console.WriteLine("ǰδע"); - // Log.Logger.Error("ǰδע"); - // Console.ReadLine(); - // return; - //} - //else - //{ - // var json = File.ReadAllText($@"C:\ProgramData\.xingcang\config.json"); + if (!File.Exists($@"C:\ProgramData\.xingcang\config.json")) + { + Console.WriteLine("ǰδע"); + Log.Logger.Error("ǰδע"); + Console.ReadLine(); + return; + } + else + { + var json = File.ReadAllText($@"C:\ProgramData\.xingcang\config.json"); - // JObject jsonObject = JObject.Parse(json); + JObject jsonObject = JObject.Parse(json); - // var key = jsonObject["key"].ToString(); + var key = jsonObject["key"].ToString(); - // var value = jsonObject["value"].ToString(); + var value = jsonObject["value"].ToString(); - // var physicalAddressList = NetworkInterface.GetAllNetworkInterfaces().Select(t => t.GetPhysicalAddress().ToString()); + var physicalAddressList = NetworkInterface.GetAllNetworkInterfaces().Select(t => t.GetPhysicalAddress().ToString()); - // // жļĻǷDZ - // if (!physicalAddressList.Contains(key)) - // { - // Console.WriteLine("ͱӦ"); - // Log.Logger.Error("ͱӦ"); - // Console.ReadLine(); + // жļĻǷDZ + if (!physicalAddressList.Contains(key)) + { + Console.WriteLine("ͱӦ"); + Log.Logger.Error("ͱӦ"); + Console.ReadLine(); - // return; - // } + return; + } - // var secrete = MD5Helper.Md5($"{key}_XINGCANG"); + var secrete = MD5Helper.Md5($"{key}_XINGCANG"); - // if (value != secrete) - // { - // Console.WriteLine("ע벻ƥ"); - // Log.Logger.Error("ע벻ƥ"); - // Console.ReadLine(); + if (value != secrete) + { + Console.WriteLine("ע벻ƥ"); + Log.Logger.Error("ע벻ƥ"); + Console.ReadLine(); - // return; + return; - // } + } - //} + } #endregion diff --git a/IRaCIS.Core.Application/Helper/NpoiWordHelper.cs b/IRaCIS.Core.Application/Helper/NpoiWordHelper.cs deleted file mode 100644 index 2e993214..00000000 --- a/IRaCIS.Core.Application/Helper/NpoiWordHelper.cs +++ /dev/null @@ -1,171 +0,0 @@ - -using IRaCIS.Core.Application.Helper; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using NPOI.OpenXmlFormats.Wordprocessing; -using NPOI.XWPF.UserModel; -using System.Collections; -using System.Reflection; - -namespace IRaCIS.Core.Application.Service; - -public static class NpoiWordHelper -{ - public static async Task TemplateExportWordAsync(string code, object data, IRepository? _commonDocumentRepository, IWebHostEnvironment _hostEnvironment) - { - //var (physicalPath, fileNmae) = await FileStoreHelper.GetCommonDocPhysicalFilePathAsync(_hostEnvironment, _commonDocumentRepository, code); - - var physicalPath = code; - - - using (FileStream stream = File.OpenRead(physicalPath)) - { - XWPFDocument doc = new XWPFDocument(stream); - //遍历段落 - foreach (var para in doc.Paragraphs) - { - ReplaceKey(para, data); - } - //遍历表格 - var tables = doc.Tables; - foreach (var table in tables) - { - //ReplaceTableKey(table, data, "Data"); - } - - foreach (var table in tables) - { - foreach (var row in table.Rows) - { - foreach (var cell in row.GetTableCells()) - { - foreach (var para in cell.Paragraphs) - { - ReplaceKey(para, data); - } - } - } - } - - FileStream out1 = new FileStream("table.docx", FileMode.Create); - doc.Write(out1); - out1.Close(); - return new FileStreamResult(stream, "application/msword") - { - FileDownloadName = $"replaced_{DateTime.Now.ToString("yyyyMMddHHmmss")}.docx" - }; - } - - - - - - - - - - - - - - - } - - private static void ReplaceKey(XWPFParagraph para, object model) - { - string text = para.ParagraphText; - - Type t = model.GetType(); - PropertyInfo[] pi = t.GetProperties(); - foreach (PropertyInfo p in pi) - { - //$$与模板中$$对应,也可以改成其它符号,比如{$name},务必做到唯一 - if (text.Contains("$" + p.Name + "$")) - { - text = text.Replace("$" + p.Name + "$", p.GetValue(model)?.ToString()); - } - } - - //var runs = para.Runs; - //string styleid = para.Style; - //for (int i = 0; i < runs.Count; i++) - //{ - // var run = runs[i]; - // text = run.ToString(); - // Type t = model.GetType(); - // PropertyInfo[] pi = t.GetProperties(); - // foreach (PropertyInfo p in pi) - // { - // //$$与模板中$$对应,也可以改成其它符号,比如{$name},务必做到唯一 - // if (text.Contains("$" + p.Name + "$")) - // { - // text = text.Replace("$" + p.Name + "$", p.GetValue(model)?.ToString()); - // } - // } - // runs[i].SetText(text, 0); - //} - } - - - - - /// - /// 替换表格Key - /// - /// - /// - /// - - private static void ReplaceTableKey(XWPFTable table, IList list, String field) - { - List paras = new List(); - // 获取最后一行数据,最后一行设置值 - Int32 iLastRowIndex = 0; - for (int iIndex = 0; iIndex < table.Rows.Count; iIndex++) - { - if (iIndex == table.Rows.Count - 1) - { - iLastRowIndex = iIndex; - foreach (var cell in table.Rows[iIndex].GetTableCells()) - { - foreach (var para in cell.Paragraphs) - { - paras.Add(para); - } - } - } - } - // 删除最后一行 - table.RemoveRow(iLastRowIndex); - - for (int iIndex = 0; iIndex < list.Count; iIndex++) - { - object data = list[iIndex]; - Type t = data.GetType(); - PropertyInfo[] pi = t.GetProperties(); - // 表增加行 - XWPFTableRow m_row = table.CreateRow(); - CT_Row m_NewRow = new CT_Row(); - String text = String.Empty; - Int32 jIndex = 0; - paras.ForEach(para => - { - text = para.ParagraphText; - foreach (PropertyInfo p in pi) - { - if (text.Contains("$" + field + "." + p.Name + "$")) - { - m_row.GetCell(jIndex).SetText(p.GetValue(data, null).ToString()); - } - } - jIndex++; - }); - m_row = new XWPFTableRow(m_NewRow, table); - table.AddRow(m_row); - - } - } - - - -} \ No newline at end of file diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs index 8a8f6fa2..a2c79993 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs @@ -187,7 +187,7 @@ namespace IRaCIS.Application.Services #endregion - #region 自动添加IC 到Site 里 + #region 自动添加CRC 到Site 里 if (await _repository.AnyAsync(t => t.Id == item.UserId && t.UserTypeRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator)) { await _repository.AddAsync(new TrialSiteUser() { TrialId = trialId, SiteId = Guid.Parse("db83e2f5-1f2e-408f-a45b-08d8e1dcace0"), UserId =item.UserId }); @@ -218,10 +218,10 @@ namespace IRaCIS.Application.Services if (updateTrialUserCommand.IsDeleted) { - if (await _repository.AnyAsync(t => t.UserId == trialUser.UserId && t.TrialId == trialUser.TrialId)) - { - return ResponseOutput.NotOk("Participant has participated in site maintenance"); - } + //if (await _repository.AnyAsync(t => t.UserId == trialUser.UserId && t.TrialId == trialUser.TrialId)) + //{ + // return ResponseOutput.NotOk("Participant has participated in site maintenance"); + //} if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC) { @@ -253,10 +253,10 @@ namespace IRaCIS.Application.Services if (trialUser == null) return Null404NotFound(trialUser); - if (await _repository.AnyAsync(t => t.UserId == trialUser.UserId && t.TrialId == trialUser.TrialId)) - { - return ResponseOutput.NotOk("Participant has participated in site maintenance"); - } + //if (await _repository.AnyAsync(t => t.UserId == trialUser.UserId && t.TrialId == trialUser.TrialId)) + //{ + // return ResponseOutput.NotOk("Participant has participated in site maintenance"); + //} if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC && isDelete) { diff --git a/Start/Resource/Data/data.sql b/Start/Resource/Data/data.sql index b132d100..74fb20f2 100644 Binary files a/Start/Resource/Data/data.sql and b/Start/Resource/Data/data.sql differ diff --git a/Start/Resource/EIImageViewerService.rar b/Start/Resource/EIImageViewerService.rar index 16c2e47d..1521c1e8 100644 Binary files a/Start/Resource/EIImageViewerService.rar and b/Start/Resource/EIImageViewerService.rar differ diff --git a/Start/Resource/EIImageViewerWeb.rar b/Start/Resource/EIImageViewerWeb.rar index b0317a93..129964a7 100644 Binary files a/Start/Resource/EIImageViewerWeb.rar and b/Start/Resource/EIImageViewerWeb.rar differ diff --git a/Start/Resource/医学影像处理软件用户手册.pdf b/Start/Resource/医学影像处理软件用户手册.pdf new file mode 100644 index 00000000..65d6cd70 Binary files /dev/null and b/Start/Resource/医学影像处理软件用户手册.pdf differ diff --git a/UnInstall/Program.cs b/UnInstall/Program.cs index 43fb8243..f6b43fb6 100644 --- a/UnInstall/Program.cs +++ b/UnInstall/Program.cs @@ -1,8 +1,10 @@ // See https://aka.ms/new-console-template for more information using Newtonsoft.Json.Linq; +using Serilog; using System.Data.SqlTypes; using System.Diagnostics; +using System.Drawing; async Task ProcessStandardInputAsync(Process process, string cmd, string workDirectory = "") { @@ -30,7 +32,36 @@ void DeleteFolderContents(string path) foreach (FileInfo file in directory.GetFiles()) { - file.Delete(); + + try + { + file.Attributes = FileAttributes.Normal; + file.Delete(); + } + catch (IOException ex) + { + // 处理文件被占用的异常 + MyLog($"File {file.FullName} is being used and cannot be deleted. {ex.Message}"); + } + catch (UnauthorizedAccessException ex) + { + + try + { + File.Delete(file.FullName); + } + catch (Exception ex2) + { + + MyLog($"File {file.FullName} cannot be deleted. {ex2.Message}"); + } + + + } + + + + } foreach (DirectoryInfo subDirectory in directory.GetDirectories()) @@ -39,23 +70,40 @@ void DeleteFolderContents(string path) } } + void MyLog(string message) +{ + Console.WriteLine(message); + Serilog.Log.Information(message); +} +Serilog.Log.Logger = new LoggerConfiguration() + .WriteTo.File("logs\\UninstallLog.txt", rollingInterval: RollingInterval.Day) + .CreateLogger(); + + + +var startProList = Process.GetProcesses().Where(t => t.ProcessName.Contains("Start")).ToList(); +foreach (var item in startProList) +{ + item.Kill(); +} + var configFolder = $@"C:\ProgramData\.xingcang\"; var configPath =Path.Combine(configFolder, "config.json") ; if (!File.Exists(configPath)) { - Console.WriteLine("当前系统未部署影像系统,无须卸载"); + MyLog("当前系统未部署影像系统,无须卸载"); Console.ReadLine(); } else { Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine(""); - Console.WriteLine("警告:卸载EI Image Viewer 服务,会将后台服务、数据库、网站文件以及运行的所有数据记录清除,请慎重操作。在卸载前,请确保数据已经备份。"); - Console.WriteLine(" 您确定要继续卸载该服务吗?(Y/N)"); + MyLog(""); + MyLog("警告:卸载EI Image Viewer 服务,会将后台服务、数据库、网站文件以及运行的所有数据记录清除,请慎重操作。在卸载前,请确保数据已经备份。"); + MyLog(" 您确定要继续卸载该服务吗?(Y/N)"); Console.ResetColor(); string confirm = Console.ReadLine(); @@ -64,7 +112,7 @@ else // 执行卸载操作 try { - Console.WriteLine("开始读取激活信息..."); + MyLog("开始读取激活信息..."); var appsettingsJson = File.ReadAllText(configPath); @@ -87,7 +135,7 @@ else nginxServiceName= jObject["nginxServiceName"]?.ToString(), nginxServiceEXEPath= jObject["nginxServiceEXEPath"]?.ToString(), }; - Console.WriteLine("激活信息读取完毕,开始准备卸载..."); + MyLog("激活信息读取完毕,开始准备卸载..."); @@ -101,14 +149,15 @@ else process.Start(); - Console.WriteLine("停止并卸载nginx服务..."); + MyLog("停止并卸载nginx服务..."); await ProcessStandardInputAsync(process, $" {configObj.nginxServiceEXEPath} uninstall ", configObj.nginxStartPath); await ProcessStandardInputAsync(process, $"sc stop {configObj.nginxServiceName}"); await ProcessStandardInputAsync(process, $"sc delete {configObj.nginxServiceName}"); await Task.Delay(2000); - var proList = Process.GetProcesses().Where(t => (t.ProcessName.Contains("nginx") || t.ProcessName.Contains("nginxService")) && t.MainModule.FileName.Contains(configObj.nginxStartPath)); + + var proList = Process.GetProcesses().Where(t => ((t.ProcessName.Contains("nginx") || t.ProcessName.Contains("nginxService")) && t.MainModule.FileName.Contains(configObj.nginxStartPath))).ToList(); foreach (var item in proList) { @@ -117,37 +166,40 @@ else - Console.WriteLine("停止并卸载后端服务..."); + + MyLog("停止并卸载后端服务..."); await ProcessStandardInputAsync(process, $"sc stop {configObj.serviceName}"); await ProcessStandardInputAsync(process, $"sc delete {configObj.serviceName}"); - Console.WriteLine("数据库若被其他进程或者连接正在使用,将会删除失败,您可以卸载完后手动删除遗留的数据库"); - Console.WriteLine("执行删除数据库命令..."); + MyLog("数据库若被其他进程或者连接正在使用,将会删除失败,您可以卸载完后手动删除遗留的数据库"); + MyLog("执行删除数据库命令..."); await ProcessStandardInputAsync(process, $@" SQLCMD -S {configObj.server} -U {configObj.user} -P {configObj.password} -Q ""DROP DATABASE {configObj.dbName}"" "); process.StandardInput.Close(); process.WaitForExit(); - Console.WriteLine("删除部署文件夹下的所有内容..."); + MyLog("删除部署文件夹下的所有内容..."); DeleteFolderContents(configObj.deployFolder); DeleteFolderContents(configFolder); - Console.WriteLine("删除激活信息..."); - - Console.WriteLine("EI Image Viewer 服务卸载完成。"); - Console.ReadLine(); - + MyLog("删除激活信息..."); + MyLog("EI Image Viewer 服务卸载完成。"); + } catch (Exception ex) { - Console.WriteLine("程序出错:" + ex.Message); + MyLog("程序出错:" + ex.Message); + } + finally + { + Console.ReadLine(); } } diff --git a/UnInstall/UnInstall.csproj b/UnInstall/UnInstall.csproj index 7789b8da..8c3d4396 100644 --- a/UnInstall/UnInstall.csproj +++ b/UnInstall/UnInstall.csproj @@ -15,6 +15,7 @@ +