CÁCH ĐÓNG GÓI PHẦN MỀM C# VISUAL STUDIO 2017

Xin chào những bạn, bài viết hôm nay mình đang hướng dẫn chúng ta đóng gói phần mềm thành file cài đặt installer thực hiện script PowerShell.Bạn đang xem: Đóng gói phần mềm thành file exe

Sau khi các bạn viết xong phần mềm trên Winform, các bạn phải đóng gói ứng dụng thành file thiết lập đặt.

Bạn đang xem: Cách đóng gói phần mềm c# visual studio 2017

Bình thường, các các bạn sẽ sử dụng phần mềm: Advance Installer, One Click Install tốt Installshield...

Trong bài viết này mình sẽ hướng dẫn chúng ta đóng gói ứng dụng tool nhỏ tuổi cài đặt sử dụng script PowerShell.

Lợi ích của bài toán đóng gói này là file cài đặt của bạn khoảng tầm 300MB (nếu các bạn nào code bằng Devexpress thì sẽ thấy dung lượng rất nhiều).

Nhược điểm: Muốn thiết lập phải có mạng internet.

Xem thêm: Làm Thế Nào Để Bị Ốm Nhanh, Những Nguyên Nhân Khiến Bạn Thường Xuyên Bị Ốm

Các chúng ta có thể mở chương trình Powershell ISE, để code script


*

Các cách đóng gói phần mềm SVG Collection của mình.

Bước 1: Nén File ứng dụng ở thư mục Release lên hosting web của các bạn

Và khi chạy Script cài đặt đặt chúng ta sẽ thực hiện quá trình công vấn đề sau:

Bước 2: download file tự hosting name VD: https://oimlya.com/svg_csharp.rar 

Bước 3: Giải nén file rar vào thư mục họ chỉ định

Bước 4: Xóa file rar bọn họ đã tải về

Bước 5: Chạy mở áp dụng lên

Bước 6: chế tạo shortcut ứng dụng trước Desktop.

Script mình viết cũng 1-1 giản chúng ta chỉ phải vào sửa đổi các thông số kỹ thuật lại là ngừng nhé.

Sau lúc Viết Script PowerShell xong, bọn họ sẽ sử dụng PS2EXE => gửi file script thành tệp tin EXE

Video demo áp dụng tạo sau thời điểm tạo file setup thành công:

Source code full script PowerShell setup:

::InputEncoding = ::OutputEncoding = New-Object System.Text.UTF8Encoding$host.UI.RawUI.WindowTitle = "Cài đặt ứng dụng Powershell - https://oimlya.com"Add-Type -AssemblyName System.Windows.Forms$browser = New-Object System.Windows.Forms.FolderBrowserDialog$browser.Description = "Bạn hãy lựa chọn thư mục thiết đặt phần mềm"$null = $browser.ShowDialog()$temp = $browser.SelectedPathWrite-Output $temp$url = "https://oimlya.com/svg_csharp.rar"$output = $temp + "svg_csharp.rar"$start_time = Get-Date#Import-Module BitsTransfer#Start-BitsTransfer -Source $url -Destination $output#OR#Start-BitsTransfer -Source $url -Destination $output -AsynchronousFunction Get-Webfile ($url) $dest = $output Write-Host "Đang download $url`n" -ForegroundColor DarkGreen; $uri=New-Object "System.Uri" "$url" $request=::Create($uri) $request.set_Timeout(5000) $response=$request.GetResponse() $totalLength=::Floor($response.get_ContentLength()/1024) $length=$response.get_ContentLength() $responseStream=$response.GetResponseStream() $destStream=New-Object -TypeName System.IO.FileStream -ArgumentList $dest, Create $buffer=New-Object byte 10KB $count=$responseStream.Read($buffer,0,$buffer.length) $downloadedBytes=$count while ($count -gt 0) ::CursorLeft = 0 ::Write("Đang tải phần mềm 0K of 1K (2%)", ::Floor($downloadedBytes/1024), $totalLength, ::Round(($downloadedBytes / $length) * 100,0)) $destStream.Write($buffer, 0, $count) $count=$responseStream.Read($buffer,0,$buffer.length) $downloadedBytes+=$count Write-Host "" Write-Host "`nDownload of `"$dest`" finished." -ForegroundColor DarkGreen; $destStream.Flush() $destStream.Close() $destStream.Dispose() $responseStream.Dispose()Get-Webfile $urlWrite-Output "Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)"Set-Location $tempFunction Extract-WinRarFiles Param ( $UnRarExePath = "$env:ProgramFilesWinRARUnRAR.exe", $UnRarSourcePath, $UnRarTargetPath, $OpenTargetLocation, $DeleteSourceRarFiles ) Begin Where-Object -FilterScript $_.extension -eq '.rar' ).FullName $RarFileSourceCount = $RarFilePaths.Count Process $NewLine Write-Output -Verbose "Total RAR tệp tin Count: $RarFileSourceCount" $NewLine Write-Output -Verbose "Beginning extraction, please wait..." Start-Sleep -Seconds 2 Foreach ($FilePath in $RarFilePaths) &$UnRarExePath x -y $FilePath $UnRarTargetPath $RarFileTargetCount = (Get-ChildItem -Path $UnRarTargetPath).Count If ($RarFileTargetCount -eq $RarFileSourceCount) Clear-Host $NewLine Write-Output -Verbose "$RarFileTargetCount RAR files have been extracted" $NewLine Else $NewLine Write-Warning -Message "$RarFileTargetCount out of $RarFileSourceCount have been extracted" $NewLine end Switch ($PSBoundParameters.Keys) $_ -contains 'OpenTargetLocation' $NewLine Write-Output -Verbose 'Opening RAR target location...' Start-Sleep -Seconds 5 Invoke-Item -Path $UnRarTargetPath $_ -contains 'DeleteSourceRarFiles' $NewLine Write-Output -Verbose 'Deleting source RAR files & the directory...' Start-Sleep -Seconds 5 Remove-Item -Path $UnRarSourcePath -Recurse -Force Set-Location $temp$appPath = $temp + "SGV Collection.exe" Extract-WinRarFiles -UnRarSourcePath $output -UnRarTargetPath $temp -DeleteSourceRarFiles Write-Output "Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)" Remove-Item *.tmp -recurse -force Start-Process -FilePath $appPath $WshShell = New-Object -comObject WScript.Shell$Shortcut = $WshShell.CreateShortcut("$HomeDesktopSGV Collection.lnk")$Shortcut.TargetPath = $appPath$Shortcut.Save()write-host "Setup finish..."write-host "Press any key lớn exist..."#::ReadKey($true)Sau khi chế tạo ra script kết thúc để biên dịch tệp tin script thành tệp tin EXE các bạn vào đường truyền github PS2EXE sau để xem chi tiết tạo file setup.

https://github.com/MScholtes/PS2EXE

Bước 1: chúng ta mở công tác PowerShell lên

Bước 2: Gõ lệnh cài PS2EXE về

PS C:> Install-Module ps2exeBước 3: Lệnh đóng gói, chúng ta chỉ chọn đường truyền file script với file xuất exe

Invoke-ps2exe .source.ps1 .arget.exeKhi build file Exe, ví như các bạn muốn chỉnh sửa các tham số Assembly hay icon của ứng dụng, khi build các bạn làm theo cú pháp bên dưới: