Configuration de l'installateur + Amélioration envoi de mail et publipostage et fenêtre de configuration

This commit is contained in:
Valentin Verdier 2020-12-04 23:29:56 +01:00
parent 9fc1a796d9
commit 0089a83402
9 changed files with 1196 additions and 7 deletions

View File

@ -69,6 +69,10 @@
<HintPath>packages\Microsoft.Office.Interop.Outlook.15.0.4797.1003\lib\net20\Microsoft.Office.Interop.Outlook.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.Office.Interop.Word.15.0.4797.1003\lib\net20\Microsoft.Office.Interop.Word.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Data" />

View File

@ -5,6 +5,8 @@ VisualStudioVersion = 16.0.30330.147
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hermes", "Hermes.csproj", "{2F7FDF03-5F05-438E-9C90-F926B40DCC6D}"
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Installer", "Installer\Installer.vdproj", "{F2D85CBF-A3A1-41CE-BE80-502C0DD4024D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -15,6 +17,8 @@ Global
{2F7FDF03-5F05-438E-9C90-F926B40DCC6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2F7FDF03-5F05-438E-9C90-F926B40DCC6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2F7FDF03-5F05-438E-9C90-F926B40DCC6D}.Release|Any CPU.Build.0 = Release|Any CPU
{F2D85CBF-A3A1-41CE-BE80-502C0DD4024D}.Debug|Any CPU.ActiveCfg = Debug
{F2D85CBF-A3A1-41CE-BE80-502C0DD4024D}.Release|Any CPU.ActiveCfg = Release
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

984
Installer/Installer.vdproj Normal file
View File

@ -0,0 +1,984 @@
"DeployProject"
{
"VSVersion" = "3:800"
"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
"IsWebType" = "8:FALSE"
"ProjectName" = "8:Installer"
"LanguageId" = "3:1036"
"CodePage" = "3:1252"
"UILanguageId" = "3:1036"
"SccProjectName" = "8:"
"SccLocalPath" = "8:"
"SccAuxPath" = "8:"
"SccProvider" = "8:"
"Hierarchy"
{
"Entry"
{
"MsmKey" = "8:_19F88EB0C5E322CF5572D8C5A094E0A2"
"OwnerKey" = "8:_EDA497A114444E23814EEE023731C727"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_19F88EB0C5E322CF5572D8C5A094E0A2"
"OwnerKey" = "8:_F0A5B43231BDF6E8358EE22CD3E2D5F2"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_19F88EB0C5E322CF5572D8C5A094E0A2"
"OwnerKey" = "8:_3A7113FFFEB25F3EDA7C3653528DF303"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_3A7113FFFEB25F3EDA7C3653528DF303"
"OwnerKey" = "8:_EDA497A114444E23814EEE023731C727"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_5FE7F4CD40C5D5EAEC6A24FAE0548A1E"
"OwnerKey" = "8:_EDA497A114444E23814EEE023731C727"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_824278267F774EC9910DEA799EB28764"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_CB71AB7BD5E03CBE3043D47AEB80664C"
"OwnerKey" = "8:_F0A5B43231BDF6E8358EE22CD3E2D5F2"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_CB71AB7BD5E03CBE3043D47AEB80664C"
"OwnerKey" = "8:_EDA497A114444E23814EEE023731C727"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_EDA497A114444E23814EEE023731C727"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_F0A5B43231BDF6E8358EE22CD3E2D5F2"
"OwnerKey" = "8:_EDA497A114444E23814EEE023731C727"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_5FE7F4CD40C5D5EAEC6A24FAE0548A1E"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_EDA497A114444E23814EEE023731C727"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_F0A5B43231BDF6E8358EE22CD3E2D5F2"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_CB71AB7BD5E03CBE3043D47AEB80664C"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_3A7113FFFEB25F3EDA7C3653528DF303"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_19F88EB0C5E322CF5572D8C5A094E0A2"
"MsmSig" = "8:_UNDEFINED"
}
}
"Configurations"
{
"Debug"
{
"DisplayName" = "8:Debug"
"IsDebugOnly" = "11:TRUE"
"IsReleaseOnly" = "11:FALSE"
"OutputFilename" = "8:Debug\\Setup.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\\Setup.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"
{
"{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_A96AEC9D923045FFAD7033DEE3D362B8"
{
"Name" = "8:.NET Framework"
"Message" = "8:[VSDNETMSG]"
"FrameworkVersion" = "8:.NETFramework,Version=v4.7.2"
"AllowLaterVersions" = "11:FALSE"
"InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=863262"
}
}
}
"File"
{
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_19F88EB0C5E322CF5572D8C5A094E0A2"
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_19F88EB0C5E322CF5572D8C5A094E0A2"
{
"Name" = "8:EntityFramework.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:EntityFramework.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0"
"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:TRUE"
"IsolateTo" = "8:"
}
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_3A7113FFFEB25F3EDA7C3653528DF303"
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_3A7113FFFEB25F3EDA7C3653528DF303"
{
"Name" = "8:EntityFramework.SqlServer.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:EntityFramework.SqlServer.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0"
"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:TRUE"
"IsolateTo" = "8:"
}
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_5FE7F4CD40C5D5EAEC6A24FAE0548A1E"
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"ScatterAssemblies"
{
"_5FE7F4CD40C5D5EAEC6A24FAE0548A1E"
{
"Name" = "8:System.Net.Http.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Net.Http.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0"
"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:TRUE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_824278267F774EC9910DEA799EB28764"
{
"SourcePath" = "8:..\\hermes.ico"
"TargetName" = "8:hermes.ico"
"Tag" = "8:"
"Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0"
"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:"
}
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_CB71AB7BD5E03CBE3043D47AEB80664C"
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_CB71AB7BD5E03CBE3043D47AEB80664C"
{
"Name" = "8:System.Data.SqlServerCe.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Data.SqlServerCe.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0"
"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:TRUE"
"IsolateTo" = "8:"
}
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_F0A5B43231BDF6E8358EE22CD3E2D5F2"
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:EntityFramework.SqlServerCompact, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_F0A5B43231BDF6E8358EE22CD3E2D5F2"
{
"Name" = "8:EntityFramework.SqlServerCompact.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:EntityFramework.SqlServerCompact.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0"
"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:TRUE"
"IsolateTo" = "8:"
}
}
"FileType"
{
}
"Folder"
{
"{3C67513D-01DD-4637-8A68-80971EB9504F}:_358759A83B6F4CD5AEAA9CCDB02A52A0"
{
"DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]"
"Name" = "8:#1925"
"AlwaysCreate" = "11:FALSE"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Property" = "8:TARGETDIR"
"Folders"
{
}
}
"{1525181F-901A-416C-8A58-119130FE478E}:_69BCCA4888204619A626DCAFD2ED1A5E"
{
"Name" = "8:#1919"
"AlwaysCreate" = "11:FALSE"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Property" = "8:ProgramMenuFolder"
"Folders"
{
}
}
"{1525181F-901A-416C-8A58-119130FE478E}:_78107B1F066C499B9B934932769D4317"
{
"Name" = "8:#1916"
"AlwaysCreate" = "11:FALSE"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Property" = "8:DesktopFolder"
"Folders"
{
}
}
}
"LaunchCondition"
{
}
"Locator"
{
}
"MsiBootstrapper"
{
"LangId" = "3:1036"
"RequiresElevation" = "11:FALSE"
}
"Product"
{
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:Installer"
"ProductCode" = "8:{48716B89-5E60-47AA-BDDA-1B5EB7A4A606}"
"PackageCode" = "8:{C091756C-1E54-4064-86D5-4C8FF1AF20B6}"
"UpgradeCode" = "8:{A8FB75F3-57A5-4B7D-A0AE-9E87F69529B0}"
"AspNetVersion" = "8:2.0.50727.0"
"RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:TRUE"
"InstallAllUsers" = "11:TRUE"
"ProductVersion" = "8:1.0.0"
"Manufacturer" = "8:Aztrom"
"ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:"
"Title" = "8:Hermes_Setup"
"Subject" = "8:"
"ARPCONTACT" = "8:Valentin VERDIER"
"Keywords" = "8:"
"ARPCOMMENTS" = "8:"
"ARPURLINFOABOUT" = "8:"
"ARPPRODUCTICON" = "8:_824278267F774EC9910DEA799EB28764"
"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}:_545AB9F64FCD4A6781D05C149CD0641F"
{
"Name" = "8:Software"
"Condition" = "8:"
"AlwaysCreate" = "11:FALSE"
"DeleteAtUninstall" = "11:FALSE"
"Transitive" = "11:FALSE"
"Keys"
{
"{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_5D4B45908879477F868C34192828C89E"
{
"Name" = "8:[Manufacturer]"
"Condition" = "8:"
"AlwaysCreate" = "11:FALSE"
"DeleteAtUninstall" = "11:FALSE"
"Transitive" = "11:FALSE"
"Keys"
{
}
"Values"
{
}
}
}
"Values"
{
}
}
}
}
"HKCU"
{
"Keys"
{
"{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_582DD07013B24C7CB80FB803635F5FA6"
{
"Name" = "8:Software"
"Condition" = "8:"
"AlwaysCreate" = "11:FALSE"
"DeleteAtUninstall" = "11:FALSE"
"Transitive" = "11:FALSE"
"Keys"
{
"{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_17D57DE15F0C4834BF01E16CBF3DA060"
{
"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}:_BB19D9AD130643B4B566689E3983C689"
{
"Name" = "8:Hermes"
"Arguments" = "8:"
"Description" = "8:"
"ShowCmd" = "3:1"
"IconIndex" = "3:0"
"Transitive" = "11:FALSE"
"Target" = "8:_EDA497A114444E23814EEE023731C727"
"Folder" = "8:_69BCCA4888204619A626DCAFD2ED1A5E"
"WorkingFolder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0"
"Icon" = "8:_824278267F774EC9910DEA799EB28764"
"Feature" = "8:"
}
"{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_D80F09644A184F9794E8DC0B7D8053ED"
{
"Name" = "8:Hermes"
"Arguments" = "8:"
"Description" = "8:"
"ShowCmd" = "3:1"
"IconIndex" = "3:0"
"Transitive" = "11:FALSE"
"Target" = "8:_EDA497A114444E23814EEE023731C727"
"Folder" = "8:_78107B1F066C499B9B934932769D4317"
"WorkingFolder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0"
"Icon" = "8:_824278267F774EC9910DEA799EB28764"
"Feature" = "8:"
}
}
"UserInterface"
{
"{DF760B10-853B-4699-99F2-AFF7185B4A62}:_2771C0C4CE254E4C82BF03CF3C43A452"
{
"Name" = "8:#1901"
"Sequence" = "3:2"
"Attributes" = "3:2"
"Dialogs"
{
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_8E56B0E3939149EA834EA1D77DC54C72"
{
"Sequence" = "3:100"
"DisplayName" = "8:Progression"
"UseDynamicProperties" = "11:TRUE"
"IsDependency" = "11:FALSE"
"SourcePath" = "8:<VsdDialogDir>\\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"
}
}
}
}
}
"{DF760B10-853B-4699-99F2-AFF7185B4A62}:_30B8FCF8B5A1477E8E5343E8266D278D"
{
"Name" = "8:#1900"
"Sequence" = "3:2"
"Attributes" = "3:1"
"Dialogs"
{
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_5EA7BD97F400412FB45BF17BF6271C5B"
{
"Sequence" = "3:300"
"DisplayName" = "8:Confirmer l'installation"
"UseDynamicProperties" = "11:TRUE"
"IsDependency" = "11:FALSE"
"SourcePath" = "8:<VsdDialogDir>\\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"
}
}
}
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C06A88CBE46147E5BB6D824010BB8B9D"
{
"Sequence" = "3:100"
"DisplayName" = "8:Bienvenue"
"UseDynamicProperties" = "11:TRUE"
"IsDependency" = "11:FALSE"
"SourcePath" = "8:<VsdDialogDir>\\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}:_FE18D76ED3CB4A979BD668DEDC5F8C82"
{
"Sequence" = "3:200"
"DisplayName" = "8:Dossier d'installation"
"UseDynamicProperties" = "11:TRUE"
"IsDependency" = "11:FALSE"
"SourcePath" = "8:<VsdDialogDir>\\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"
}
}
}
}
}
"{DF760B10-853B-4699-99F2-AFF7185B4A62}:_32AF0E043FCF43B3931BC7EC0747A474"
{
"Name" = "8:#1900"
"Sequence" = "3:1"
"Attributes" = "3:1"
"Dialogs"
{
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_8FA9DB4B4B804106A0A63D1CC308B64E"
{
"Sequence" = "3:200"
"DisplayName" = "8:Dossier d'installation"
"UseDynamicProperties" = "11:TRUE"
"IsDependency" = "11:FALSE"
"SourcePath" = "8:<VsdDialogDir>\\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"
}
}
}
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A6FECCA9331D44B1AB941A6FC958C532"
{
"Sequence" = "3:100"
"DisplayName" = "8:Bienvenue"
"UseDynamicProperties" = "11:TRUE"
"IsDependency" = "11:FALSE"
"SourcePath" = "8:<VsdDialogDir>\\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}:_C281CF7520B94272B40B5F736711866B"
{
"Sequence" = "3:300"
"DisplayName" = "8:Confirmer l'installation"
"UseDynamicProperties" = "11:TRUE"
"IsDependency" = "11:FALSE"
"SourcePath" = "8:<VsdDialogDir>\\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"
}
}
}
}
}
"{DF760B10-853B-4699-99F2-AFF7185B4A62}:_3C9D616BFDF245FCA6C150FEE707938B"
{
"Name" = "8:#1901"
"Sequence" = "3:1"
"Attributes" = "3:2"
"Dialogs"
{
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D862FF83A1CF4B5AB57DA9B3C09977E8"
{
"Sequence" = "3:100"
"DisplayName" = "8:Progression"
"UseDynamicProperties" = "11:TRUE"
"IsDependency" = "11:FALSE"
"SourcePath" = "8:<VsdDialogDir>\\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"
}
}
}
}
}
"{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_41365B9B2CD64184A72F8DF279E2E70D"
{
"UseDynamicProperties" = "11:FALSE"
"IsDependency" = "11:FALSE"
"SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"
}
"{DF760B10-853B-4699-99F2-AFF7185B4A62}:_5E75C6122FB143A193F1A771246F1013"
{
"Name" = "8:#1902"
"Sequence" = "3:2"
"Attributes" = "3:3"
"Dialogs"
{
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_083A7A9572AF465B962E94E3C61BB478"
{
"Sequence" = "3:100"
"DisplayName" = "8:Terminé"
"UseDynamicProperties" = "11:TRUE"
"IsDependency" = "11:FALSE"
"SourcePath" = "8:<VsdDialogDir>\\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}:_BE890F90C79D4A1F8B6758D3485826C1"
{
"Name" = "8:#1902"
"Sequence" = "3:1"
"Attributes" = "3:3"
"Dialogs"
{
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_F582C9A9B9864CB29BAF9DCD98C0B16D"
{
"Sequence" = "3:100"
"DisplayName" = "8:Terminé"
"UseDynamicProperties" = "11:TRUE"
"IsDependency" = "11:FALSE"
"SourcePath" = "8:<VsdDialogDir>\\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"
}
}
}
}
}
"{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_F7BCDD1E7E8B4B7A855BAA998305AF44"
{
"UseDynamicProperties" = "11:FALSE"
"IsDependency" = "11:FALSE"
"SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"
}
}
"MergeModule"
{
}
"ProjectOutput"
{
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EDA497A114444E23814EEE023731C727"
{
"SourcePath" = "8:..\\obj\\Release\\Hermes.exe"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0"
"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:Built"
"OutputProjectGuid" = "8:{2F7FDF03-5F05-438E-9C90-F926B40DCC6D}"
"ShowKeyOutput" = "11:TRUE"
"ExcludeFilters"
{
}
}
}
}
}

View File

@ -48,9 +48,9 @@
<MenuItem Name="dateModificationViewCheckBox" Header="Date de modification" IsCheckable="true"/>
</MenuItem>
<MenuItem Header="Communication">
<MenuItem Header="Courriel..."/>
<MenuItem Header="Courriel..." Click="Courriel_Click"/>
<MenuItem Header="SMS..."/>
<MenuItem Header="Publipostage..."/>
<MenuItem Header="Publipostage..." Click="Publipostage_Click"/>
</MenuItem>
<MenuItem Header="Outils">
<MenuItem Header="Options..." Click="Options_Click"/>

View File

@ -5,6 +5,9 @@ using System.Collections.Generic;
using System.Windows;
using System.Windows.Input;
using System.Windows.Data;
using System.IO;
using System.Text;
using Microsoft.Win32;
namespace Hermes {
public partial class MainWindow : Window {
@ -29,9 +32,16 @@ namespace Hermes {
dbContext.Preferences.Load();
citoyenCollectionViewSource = (CollectionViewSource) this.FindResource("citoyenCollectionViewSource");
citoyenCollectionViewSource.Source = dbContext.CitoyenSet.Local;
if(dbContext.Preferences.Local.Count == 0) {
MessageBox.Show("Il s'agit du premier lancement de Hermes. Veuillez renseigner les informations sur votre commune.", "Premier lancement", MessageBoxButton.OK, MessageBoxImage.None);
preferencesModal.LoadPreferences();
preferencesModal.ShowDialog();
}
}
private void Options_Click(object sender, RoutedEventArgs e) {
preferencesModal.LoadPreferences();
preferencesModal.ShowDialog();
}
@ -58,6 +68,82 @@ namespace Hermes {
}
}
private void Courriel_Click(object sender, RoutedEventArgs e) {
if(dgCitoyens.SelectedItems.Count > 0) {
MessageBoxResult result = MessageBox.Show("Voulez-vous envoyer un courriel à ces citoyens ?", "Envoi de courriel", MessageBoxButton.YesNo, MessageBoxImage.Question);
if(result == MessageBoxResult.Yes) {
List<string> mails = new List<string>();
foreach(Citoyen citoyen in dgCitoyens.SelectedItems) {
if(!String.IsNullOrWhiteSpace(citoyen.Mail)) {
mails.Add(citoyen.Mail);
}
}
if(mails.Count > 0) {
Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MailItem mailItem = app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
foreach(string mail in mails) {
Microsoft.Office.Interop.Outlook.Recipient rcp = mailItem.Recipients.Add(mail);
rcp.Type = (int) Microsoft.Office.Interop.Outlook.OlMailRecipientType.olBCC;
}
mailItem.Recipients.ResolveAll();
MessageBox.Show("Assurez-vous que Microsoft OutLook soit démarré avant de continuer", "Envoi de courriel", MessageBoxButton.OK, MessageBoxImage.None);
mailItem.Display(true);
} else {
MessageBox.Show("Aucun des citoyens sélectionnés ne disposent d'une adresse E-Mail", "Envoi de courriel", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
} else {
MessageBox.Show("Aucun citoyen sélectionné", "Suppression", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
private void Publipostage_Click(object sender, RoutedEventArgs e) {
if(dgCitoyens.SelectedItems.Count > 0) {
MessageBoxResult result = MessageBox.Show("Voulez-vous réaliser une tâche de publipostage pour ces citoyens ?", "Publipostage", MessageBoxButton.YesNo, MessageBoxImage.Question);
if(result == MessageBoxResult.Yes) {
string csvPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "hermes_tmp_datasource.csv");
string csvHeader = "\"Civilité\";\"Nom\";\"Nom de naissance\";\"Prénom\";\"Profession\";\"Type de résidence\";\"E-Mail\";\"Téléphone\";\"Mobile\";\"Quartier\";\"Bâtiment\";\"Adresse principale\";\"Code postal principal\";\"Ville principale\";\"Adresse secondaire\";\"Code postal secondaire\";\"Ville secondaire\"";
StringBuilder sb = new StringBuilder();
sb.AppendLine(csvHeader);
foreach(Citoyen citoyen in dgCitoyens.SelectedItems) {
string civilite = citoyen.Civilite == null ? "" : citoyen.Civilite;
string nom = citoyen.Nom == null ? "" : citoyen.Nom;
string nomNaissance = citoyen.NomNaissance == null ? "" : citoyen.NomNaissance;
string prenom = citoyen.Prenom == null ? "" : citoyen.Prenom;
string profession = citoyen.Profession == null ? "" : citoyen.Profession;
string typeResidence = citoyen.TypeResidenceLabel == null ? "" : citoyen.TypeResidenceLabel;
string mail = citoyen.Mail == null ? "" : citoyen.Mail;
string tel = citoyen.Tel == null ? "" : citoyen.Tel;
string telPort = citoyen.TelPort == null ? "" : citoyen.TelPort;
string quartier = citoyen.Quartier == null ? "" : citoyen.Quartier;
string batiment = citoyen.AdresseBatiment == null ? "" : citoyen.AdresseBatiment;
string adressePrincipale = citoyen.AdressePrincipale == null ? "" : citoyen.AdressePrincipale;
string cpPrincipal = citoyen.AdressePrincipaleCP == null ? "" : citoyen.AdressePrincipaleCP;
string villePrincipale = citoyen.AdressePrincipaleVille == null ? "" : citoyen.AdressePrincipaleVille;
string adresseSecondaire = citoyen.AdresseSecondaire == null ? "" : citoyen.AdresseSecondaire;
string cpSecondaire = citoyen.AdresseSecondaireCP == null ? "" : citoyen.AdresseSecondaireCP;
string villeSecondaire = citoyen.AdresseSecondaireVille == null ? "" : citoyen.AdresseSecondaireVille;
sb.AppendLine($"\"{civilite}\";\"{nom}\";\"{nomNaissance}\";\"{prenom}\";\"{profession}\";\"{typeResidence}\";\"{mail}\";\"{tel}\";\"{telPort}\";\"{quartier}\";\"{batiment}\";\"{adressePrincipale}\";\"{cpPrincipal}\";\"{villePrincipale}\";\"{adresseSecondaire}\";\"{cpSecondaire}\";\"{villeSecondaire}\"");
File.WriteAllText(csvPath, sb.ToString(), Encoding.GetEncoding("ISO-8859-1"));
}
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Document World|*.doc;*.docx;*.dotx|Tous les ficiers|*.*";
if(ofd.ShowDialog() == true) {
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(ofd.FileName);
doc.MailMerge.OpenDataSource(csvPath, false, false, true);
app.Visible = true;
}
}
} else {
MessageBox.Show("Aucun citoyen sélectionné", "Publipostage", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
private void DgCitoyen_DoubleClick(object sender, MouseButtonEventArgs e) {
if(dgCitoyens.SelectedItem != null) {
citoyenModal.EnableEditMode((Citoyen) dgCitoyens.SelectedItem);

View File

@ -204,6 +204,75 @@ namespace Hermes.Model {
[NotMapped]
public string AdresseVille => ModelContext.Getinstance().Preferences.Local[0].Ville;
[NotMapped]
public string AdressePrincipale {
get {
if(TypeResidence == false) {
return Adresse;
} else {
return AdresseExt;
}
}
}
[NotMapped]
public string AdressePrincipaleCP {
get {
if(TypeResidence == false) {
return AdresseCP;
} else {
return AdresseExtCP;
}
}
}
[NotMapped]
public string AdressePrincipaleVille {
get {
if(TypeResidence == false) {
return AdresseVille;
} else {
return AdresseExtVille;
}
}
}
[NotMapped]
public string AdresseSecondaire {
get {
if(TypeResidence == true) {
return Adresse;
} else {
return AdresseExt;
}
}
}
[NotMapped]
public string AdresseSecondaireCP {
get {
if(TypeResidence == true) {
return AdresseCP;
} else {
return AdresseExtCP;
}
}
}
[NotMapped]
public string AdresseSecondaireVille {
get {
if(TypeResidence == true) {
return AdresseVille;
} else {
return AdresseExtVille;
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string name = null) {

View File

@ -18,21 +18,21 @@
<TabItem Header="Général">
<StackPanel Margin="5,5,5,5" VerticalAlignment="Top">
<Label>Code postal :</Label>
<TextBox HorizontalAlignment="Left" VerticalContentAlignment="Center" Height="23" Width="80"/>
<TextBox Name="villeCPTextBox" HorizontalAlignment="Left" VerticalContentAlignment="Center" Height="23" Width="80"/>
<Label>Ville :</Label>
<TextBox HorizontalAlignment="Left" VerticalContentAlignment="Center" Height="23" Width="150"/>
<TextBox Name="villeTextBox" HorizontalAlignment="Left" VerticalContentAlignment="Center" Height="23" Width="150"/>
</StackPanel>
</TabItem>
<TabItem Header="Envoi de SMS">
<StackPanel Margin="5,5,5,5" VerticalAlignment="Top">
<Label>Clé API ISendPro :</Label>
<TextBox HorizontalAlignment="Left" VerticalContentAlignment="Center" Height="23" Width="200"/>
<TextBox Name="cleApiISendProTextBox" HorizontalAlignment="Left" VerticalContentAlignment="Center" Height="23" Width="200"/>
</StackPanel>
</TabItem>
</TabControl>
<WrapPanel Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,5,0">
<Button Height="25" Margin="0,0,10,0" Width="100" IsDefault="True">Enregister</Button>
<Button Height="25" Width="100">Annuler</Button>
<Button Height="25" Margin="0,0,10,0" Width="100" IsDefault="True" Click="Enregistrer_Click">Enregister</Button>
<Button Height="25" Width="100" Click="Annuler_Click">Annuler</Button>
</WrapPanel>
</Grid>
</Window>

View File

@ -1,4 +1,5 @@
using Hermes.Model;
using System;
using System.Windows;
namespace Hermes {
@ -14,5 +15,45 @@ namespace Hermes {
e.Cancel = true;
this.Hide();
}
public void LoadPreferences() {
if(dbContext.Preferences.Local.Count > 0) {
Preferences pref = dbContext.Preferences.Local[0];
villeTextBox.Text = pref.Ville;
villeCPTextBox.Text = pref.VilleCP;
cleApiISendProTextBox.Text = pref.SmsApiKey;
}
}
public void Enregistrer_Click(object sender, RoutedEventArgs e) {
if(String.IsNullOrWhiteSpace(villeCPTextBox.Text) || String.IsNullOrWhiteSpace(villeTextBox.Text)) {
MessageBox.Show("La saisie d'information sur la commune est obligatoire.", "Saisie obligatoire", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
if(dbContext.Preferences.Local.Count == 0) {
Preferences pref = new Preferences();
pref.Ville = villeTextBox.Text;
pref.VilleCP = villeCPTextBox.Text;
pref.SmsApiKey = cleApiISendProTextBox.Text;
dbContext.Preferences.Add(pref);
} else {
Preferences pref = dbContext.Preferences.Local[0];
pref.Ville = villeTextBox.Text;
pref.VilleCP = villeCPTextBox.Text;
pref.SmsApiKey = cleApiISendProTextBox.Text;
}
dbContext.SaveChanges();
Close();
}
public void Annuler_Click(object sender, RoutedEventArgs e) {
if(dbContext.Preferences.Local.Count == 0) {
MessageBox.Show("La saisie d'information sur la commune est obligatoire.", "Saisie obligatoire", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
Close();
}
}
}

View File

@ -3,5 +3,6 @@
<package id="EntityFramework" version="6.4.4" targetFramework="net48" />
<package id="EntityFramework.SqlServerCompact" version="6.4.4" targetFramework="net48" />
<package id="Microsoft.Office.Interop.Outlook" version="15.0.4797.1003" targetFramework="net48" />
<package id="Microsoft.Office.Interop.Word" version="15.0.4797.1003" targetFramework="net48" />
<package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net48" />
</packages>