簡體   English   中英

提取C#后運行自提取exe-DotNetZip

[英]Run self extracting exe after extraction C# - DotNetZip

我正在嘗試創建一個自解壓exe。 創建它沒問題。 我面臨的問題是

  • 設置exe所在的提取路徑
  • 運行解壓縮的exe。

對於第二部分,最有可能我必須具有正確的提取路徑。 我正在使用DotNetZipLibrary中的以下修改后的代碼

zip.AddDirectory(DirectoryPath, "putty.exe");
zip.Comment = "This will be embedded into a self-extracting console-based exe";
SelfExtractorSaveOptions options = new SelfExtractorSaveOptions();
options.Flavor = SelfExtractorFlavor.ConsoleApplication;
options.DefaultExtractDirectory = "";
options.PostExtractCommandLine = "..\\putty.exe";
options.RemoveUnpackedFilesAfterExecute = true;
zip.SaveSelfExtractor("archive.exe", options);

我看到兩個問題。

首先,你在打電話

zip.AddDirectory(DirectoryPath, "putty.exe");

AddDirectory()方法將目錄添加到zip存檔中。 接受2個輸入(您正在使用的輸入)的重載將使用第二個參數在zip存檔中命名該目錄。 因此,進行此調用后,您將在zip存檔中擁有可以在文件系統上的DirectoryPath找到的所有文件。 zip存檔中使用的根目錄名稱將為“ putty.exe”。 至少這是目錄的混亂名稱。 我認為您可能不打算這樣做。

如果要將文件添加到存檔,請使用AddFile(),而不要使用AddDirectory()。


其次,根據文檔 ,運行post-extract命令

...使用解壓縮目錄作為流程的工作目錄,...

因此,如果壓縮文件的根目錄中有一個名為“ putty.exe”的文件,則您要運行的命令可能是“ putty.exe”,而不是“ .. \\ putty.exe”。


我建議在開發過程中,取出保存到自解壓器中的部分,並用保存到常規zip文件中的部分替換它。 檢查您生成的zip文件,以確保它看起來像您想要的樣子。 當您安裝正確時,將SaveSelfExtractor()部件放回去,您將獲得合適的SFX。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM