iT邦幫忙

2

C#專案可以做成簡單的安裝包嗎?

edl 2025-04-30 14:56:182032 瀏覽
  • 分享至 

  • xImage

公司的程式平常有要更新
都只會更新一個.exe 和兩個.dll而已

最近遇到Mail server的規則
或者防毒的規則
專案匯出的.exe檔案不是被擋就是被改副檔名
會被判定成危險

我去嘗試使用Visual Studio Installer Projects做成安裝檔
問題是安裝過一次下次就要先移除才能再安裝
由於是要給客戶使用的
基本上當作他們只會點兩下我給他們的東西
要他們移除對他們來說太難了

所以想請問有沒有其他的工具
可以幫我把檔案打包成一個安裝檔
執行時就單純把打包的檔案複製到指定的資料夾這樣

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
尼克
iT邦大師 1 級 ‧ 2025-04-30 15:02:40

壓縮成zip並且加入密碼後寄給客戶。

看更多先前的回應...收起先前的回應...
edl iT邦新手 5 級 ‧ 2025-04-30 15:52:49 檢舉

沒有辦法
winRAR zip裡面的東西會被防毒掃到直接改附檔名
一開始我不知道
客戶也沒看檔案名稱
直到我遠端才發現被改掉了

froce iT邦大師 1 級 ‧ 2025-04-30 16:07:14 檢舉

壓成7z應該不會。

壓兩次@@..
先壓7z在壓成zip

尼克 iT邦大師 1 級 ‧ 2025-05-01 17:43:50 檢舉

有密碼還會被擋住?

掃毒可能會破解zip密碼吧~

ruiang iT邦新手 5 級 ‧ 2025-05-09 10:31:57 檢舉

這方式會被防毒擋,我都直接修改附檔名再請客戶把附檔名改回.exe
但比較建議將專案發布成安裝包再給客戶會比較好

0
marguerite
iT邦新手 4 級 ‧ 2025-04-30 16:07:05

Visual Studio 先安裝 Microsoft Visual Studio Installer Projects,在專案中加入Installer Projects,Installer Projects加入執行檔以及相關檔案,建置Installer Projects
會產生副檔名為msi的安裝精靈檔案。

先將執行檔副檔名改成非exe,寄給客戶請客戶修改副檔名,再覆蓋原本的執行檔。

1
DennisLu
iT邦好手 1 級 ‧ 2025-04-30 16:49:18

如何透過mail交付到客戶手中並且可以安裝重複製作新版本Patch的安裝程式。

mail交付可以不用附加檔案,你可以給一個做法讓他自己取得。
例如:下載連結。
一些可信任免費空間製作安裝程式載點。
google硬碟
ASUS WebStorage(開帳號有少量空間免費使用),
github開一個專案目錄放上安裝程式提供下載。

安裝程式部分,大多都是最終exe呈現,如果使用上述下載連結讓對方取得就解決傳輸問題。
你的東西很簡單
少數 dll 跟 exe 檔案放置在特定目錄。

7zsfxMaker:可以製作壓縮自解exe檔案,可以指定解壓路徑以及解壓後執行特定檔案(選配),就可以達到重複安裝效果。

NSIS:專門製作安裝程式的封裝工具,這需要學習NSIS語法,但學會之後幾乎能幹很多事情,要簡單要複雜都可以。學習門檻較高,不過你是寫程式背景學習應該不難,學起來多一個技能有利於之後解決很多大量佈署程式問題。你的需求很簡單算是簡單範例水準就能應付。

3
Yaowen
iT邦研究生 2 級 ‧ 2025-04-30 17:00:23

你可以自己做自動更新
請下載 AutoUpdaterDotNET 套件

 private static void AutoUpdateEvent(UpdateInfoEventArgs args)
 {
var dialogResult = MessageBox.Show($"有新版本可用。要立即更新應用程式嗎?", "更新可用", MessageBoxButtons.YesNo);
 if (dialogResult == DialogResult.Yes)
 {
     try
     {
         // 下載成功
         if (AutoUpdater.DownloadUpdate(args))
         {
             // 關閉原來的程式並更新
             System.Windows.Forms.Application.Exit();
         }
     }
     catch (Exception exception)
     {
         MessageBox.Show("更新失敗", "錯誤", MessageBoxButtons.OK);
     }
}

我要發表回答

立即登入回答