如何透過網路共用運行應用程式以便更新應用程式?

如何透過網路共用運行應用程式以便更新應用程式?

我們有一個內部桌面應用程序,已將其部署到網路共用。此目錄包含每個版本的子目錄,分別為 z:\Apps\ApplicationX\1.0 z:\Apps\ApplicationX\2.0 z:\Apps\ApplicationX\2.1

我想在用戶桌面上放置一個指向應用程式最新版本的捷徑。我目前的解決方案是將目前版本放入名為“z:\Apps\ApplicationX\Current”的目錄中,並在桌面上放置指向該 exe 的捷徑。

問題是,當他們運行應用程式時,我無法更新應用程序,因為檔案被鎖定。

我嘗試更改快捷方式以指向批次文件,該批次文件在本地複製文件,然後從那裡運行它,但我們都在 Windows 7 上,並且 UAC 導致將文件複製到我期望的 C: 驅動器時出現問題待安裝。

我想我可以將可執行檔複製到用戶主驅動器並從那裡運行它,但我不喜歡在用戶主驅動器中擁有可執行檔的想法。這也意味著網路上有該應用程式的多個副本,我不喜歡這種情況。

我還認為我可能能夠擁有快捷方式的快捷方式,並且我只需更新快捷方式即可,但這也不起作用。

我目前的解決方案是擁有一個批次文件,其中包含指向當前版本的啟動命令以及該批次檔的捷徑。

還有其他人有可能的解決方案嗎?

答案1

我首選的方法是兩次應用。您已經擁有的主要應用程式。第二個是啟動器/更新器。建立啟動器的快捷方式,它檢查要啟動的可執行檔路徑的配置設定(加密的亂碼、xml、純文字、直接硬編碼到啟動器中,等等),然後啟動它。一旦主應用程式啟動,載入程式將終止。

每當您獲得新版本時,您都會更新啟動器的設定文件,以後的程式啟動將開啟新版本。

這是「引導程式」風格的過程。有一個指向全尺寸應用程式的小型輔助應用程式。客戶啟動這個小應用程序,然後它會將他們引導到正確的完整應用程式。

如果您讓啟動器檢查全尺寸應用程式上的哈希指紋或簽名,以確保沒有人發揮創意並嘗試從啟動器連結到另一個應用程序,則會獲得獎勵積分。

答案2

聽起來像是遺留應用程式。最好的選擇是不要讓事情變得太複雜,只需安排停機時間進行更新即可。

答案3

我同意DanBig 的觀點,在你的簡單情況下,除非你想對其進行大量修改(就像Ruscal 所建議的那樣,這是一個好主意),只需安排一次“中斷”,在其中踢出文件鎖並替換.exe 檔案(可能是過夜或週末)。

「我想在使用者桌面上放置一個指向應用程式最新版本的捷徑」-OP

至於將它們放在桌面上,為什麼不將快捷方式指向 z:\Apps\ApplicationX\ 並將當前的 EXE 放在那裡。然後根據需要為過去的修訂/版本建立子資料夾,例如 z:\Apps\ApplicationX\revisions。這樣,客戶端捷徑永遠不會更改,並且在更新期間,您只需將現有exe 移至rev# 資料夾,並將新的/更新的.exe 放入z:\Apps\ApplicationX\ 資料夾中。

答案4

您可以使用在 Linux 上運行的 Samba 伺服器。當您需要更新應用程式時,只需重命名「目前」資料夾並建立一個名為「目前」的新資料夾即可。該共享必須是唯讀的。

在 Linux (Unix) 上,允許重命名或刪除文件,並且開啟檔案的進程將能夠使用舊版本,直到檔案描述符關閉。

相關內容