{"id":28719820,"url":"https://github.com/bdshanto/serverdeployment","last_synced_at":"2025-06-15T06:05:38.317Z","repository":{"id":294446287,"uuid":"986963712","full_name":"bdshanto/ServerDeployment","owner":"bdshanto","description":"This Windows Forms application streamlines deployment and management of IIS-hosted web applications, including backend APIs, Angular frontends, and ReportViewer web apps. It helps automate tasks such as site backup, stopping/starting IIS sites, file cleanup, and content publishing.","archived":false,"fork":false,"pushed_at":"2025-05-31T16:31:46.000Z","size":684,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-31T23:35:08.181Z","etag":null,"topics":["desktop-application","dotnet-core","iis-server","infragistics","publish","webform"],"latest_commit_sha":null,"homepage":"","language":"Inno Setup","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bdshanto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-20T11:28:51.000Z","updated_at":"2025-05-31T16:31:49.000Z","dependencies_parsed_at":"2025-05-20T13:31:57.531Z","dependency_job_id":"e5b51151-fbdd-4ccc-835b-babc6cb9886c","html_url":"https://github.com/bdshanto/ServerDeployment","commit_stats":null,"previous_names":["bdshanto/serverdeployment"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bdshanto/ServerDeployment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bdshanto%2FServerDeployment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bdshanto%2FServerDeployment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bdshanto%2FServerDeployment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bdshanto%2FServerDeployment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bdshanto","download_url":"https://codeload.github.com/bdshanto/ServerDeployment/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bdshanto%2FServerDeployment/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259929969,"owners_count":22933534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desktop-application","dotnet-core","iis-server","infragistics","publish","webform"],"created_at":"2025-06-15T06:05:37.642Z","updated_at":"2025-06-15T06:05:38.267Z","avatar_url":"https://github.com/bdshanto.png","language":"Inno Setup","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Server Deployment Utility for IIS Web Applications\n\n\n## Overview\n\nThis Windows Forms application streamlines deployment and management of IIS-hosted web applications, including backend APIs, Angular frontends, and ReportViewer web apps. It helps automate tasks such as site backup, stopping/starting IIS sites, file cleanup, and content publishing.\n\n---\n\n## Features\n\n- **IIS Site Discovery:** Lists all IIS websites with status and physical paths.\n- **Selective Site Management:** Choose one or more sites for backup and deployment.\n- **Backup:** Backup entire site directories with progress reporting.\n- **Stop/Start IIS Sites:** Control IIS sites via AppCmd commands.\n- **Delete Site Files:** Safely delete files/folders while excluding critical folders (e.g., `Documents`).\n- **Deploy Content:** Copy backend, frontend, and report files from source folders to target sites.\n- **Configuration Sync:** Copy/update configuration files (`web.config`, `appsettings.json`) after deployment.\n- **File/Folder Validation:** Validates backend, frontend, and report folders for expected files/folders before deployment.\n- **Progress Reporting:** UI progress bars and colored status messages update in real-time.\n- **Publish Button:** Executes the full deployment process (backup, stop site, delete files, deploy content, config sync, start site) as a single automated action.\n\n---\n\n## Deployment Form UI\n \n\n\u003cp align=\"center\" \u003e\n  \u003cimg align=\"center\" alt=\"Initial Load with No Site Selected\" src=\"resources/resource-01.png\" title=\"Figure 1\" width=\"500\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cstrong\u003eFigure 1:\u003c/strong\u003e  Initial Load with No Site Selected\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/resource-02.png\" alt=\"Site Selected with Backup, Backend, Frontend, and Report Paths Set\" width=\"500\" title=\"Figure 2\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cstrong\u003eFigure 2:\u003c/strong\u003e Site Selected with Backup, Backend, Frontend, and Report Paths Set\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/resource-03.png\" alt=\"Backup and Copy Progress Indicated with Percentage and File Count\" width=\"500\" title=\"Figure 3\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cstrong\u003eFigure 3:\u003c/strong\u003e Backup and Copy Progress Indicated with Percentage and File Count\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/resource-04.png\" alt=\"Deployment Form Post Deployment Site Restarted\" width=\"500\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cstrong\u003eFigure 4:\u003c/strong\u003e Deployment Complete, Site Restarted and Running\u003c/p\u003e\n\n**Note:** The **Publish** button triggers the entire deployment workflow, automating backup, site stopping, file cleanup, content deployment, configuration synchronization, and site restarting in one seamless process.\n\n---\n## Technology Stack\n\n- .NET 8 Windows Forms\n- Infragistics WinForms UltraGrid control\n- PowerShell (to retrieve IIS site info)\n- Windows AppCmd utility for IIS control\n- JSON serialization with `System.Text.Json`\n\n---\n\n## Expected Folder Structures\n\n### Backend Deployment Folder Must Contain\n- `Documents/`, `runtimes/`\n- Config files: `appsettings.json`, `web.config`, `efpt.config.json`, `libman.json`\n- DLLs matching patterns `Microsoft.*.dll`, `System.*.dll`\n\n### Frontend Angular Build Folder Must Contain\n- `index.html`, `assets/`\n- JS and CSS files matching dynamic regex patterns like `main.*.bundle.js`\n\n### ReportViewer Folder Must Contain\n- Directories like `bin`, `Content`, `fonts`, `Scripts`, `SqlServerTypes`\n- Files such as `About.aspx`, `Default.aspx`, `ReportViewer.aspx`, `Site.Master`, etc.\n\n---\n\n## Usage\n\n1. Launch the app with administrative privileges.\n2. Select sites from the IIS list to backup/deploy.\n3. Set backup destination and deployment source folders (backend, frontend, report).\n4. Use buttons to perform backup, stop/start sites, delete files, copy configs, and deploy content.\n5. Monitor status messages and progress bars for real-time feedback.\n\n---\n\n## How It Works\n\n- Uses PowerShell to list IIS sites with name, physical path, and state.\n- Uses Windows AppCmd to stop and start IIS sites.\n- Recursively copies or deletes files and folders with UI progress updates.\n- Validates expected file sets before deployment to avoid incomplete releases.\n\n---\n\n## Getting Started\n\n- Clone or download the repository.\n- Open in Visual Studio 2022+ and build the solution.\n- Ensure you have the required `.NET SDK 8` and Infragistics(`InfragisticsUltimate2022.2`) controls installed.\n- Ensure IIS is installed and configured on your machine.\n- Ensure you have the necessary permissions to manage IIS sites.\n- Ensure the required backend, frontend, and report folders are structured as expected.\n- Ensure the `appsettings.json` and other config files are correctly set up in the backend folder.\n- Ensure the Angular frontend is built and the output folder is ready for deployment.\n- Ensure the ReportViewer web app files are in the correct structure.\n- Ensure the `bin`, `Content`, `fonts`, `Scripts`, and `SqlServerTypes` folders are present in the ReportViewer folder.\n- Ensure the `main.*.bundle.js` files are present in the Angular build folder.\n- Ensure the `About.aspx`, `Default.aspx`, `ReportViewer.aspx`, and `Site.Master` files are present in the ReportViewer folder.\n- Ensure the `appsettings.json`, `web.config`, and other config files are present in the backend deployment folder. \n- Run the executable as Administrator (required for IIS control).\n- Configure the backup and deployment folders before publishing.\n- Click the **Publish** button to execute the deployment workflow.\n- Monitor the progress and status messages for feedback.\n- After deployment, verify the sites are running correctly in IIS.\n- Check the IIS Manager to confirm site status and content.\n- Review the logs for any errors or warnings during deployment.\n\n\n\n---\n\n## Notes\n\n- The tool is designed to work with IIS sites structured similarly to Demo deployments.\n- It is not intended for use with non-IIS web servers or applications.\n- The application is built using .NET 8 and requires the latest version of Visual Studio for development.\n- Administrative rights are required for IIS operations.\n- The UI leverages Infragistics UltraGrid for a rich user experience.\n- The application is designed to be user-friendly, with clear instructions and progress indicators.\n- The tool is suitable for developers and system administrators who manage IIS-hosted web applications.\n- The application is extensible and can be modified to include additional features or support for more complex deployment scenarios.\n\n---\n\n## Author\n\nMd Hasibul Islam Shanto  \nLinkedIn: [bdshanto](https://www.linkedin.com/in/bdshanto)\n\n---\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbdshanto%2Fserverdeployment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbdshanto%2Fserverdeployment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbdshanto%2Fserverdeployment/lists"}