了解您的安裝程式

本文列出將現有安裝程式轉換成 MSIX 之前需要知道的事項。 您可能不需要這麼多,就能讓您的應用程式準備好進行封裝程式,但如果下列任何專案適用于您的應用程式,則必須在封裝之前加以解決。

  • 您的應用程式有服務。 我們支援 使用服務來轉換應用程式,但請務必記住轉換服務的 限制 。 轉換之後,您將需要系統管理員許可權,才能安裝包含服務的 MSIX。 您可以從 MSIX 封裝工具的 [版本 1.2019.1220.0] 開始轉換具有服務的應用程式,而且您可以從 Windows 10 2020 版的版開始,使用服務來部署 MSIX。

  • 您的安裝程式需要重新開機。 如果您的安裝程式需要 重新開機,從版本1.2019.701.0 開始的 MSIX 封裝工具支援此功能。 如果您的安裝程式傳回不尋常的結束代碼來指出它需要重新開機,您應該將它新增至 MSIX 封裝工具設定的 [ 重新開機結束代碼 ] 區段。

  • 您的 .NET 應用程式需要 4.6.2 之前的 .NET Framework 版本。 如果您要封裝 .NET 應用程式,我們建議應用程式將 .NET Framework 4.6.2 或更新版本設為目標。 能夠安裝和執行已封裝傳統型應用程式的能力,最先是在 Windows 10 版本 1607 (也稱為年度更新版) 中引進,而此 OS 版本預設會包含 .NET Framework 4.6.2。 更新的作業系統版本包含更新版本的 .NET Framework。 如需更新 Windows 10 版本中包含哪些 .NET 版本的完整清單,請參閱這篇文章

    在封裝的傳統型應用程式中,將 4.6.2 之前的 .NET Framework 版本設為目標,預期可在大部分情況下運作。 不過,如果您將 4.6.2 之前的版本設為目標,應該先完整測試封裝的傳統型應用程式,然後再將其散發給使用者。

    • 4.0 - 4.6.1:將這些 .NET Framework 版本設為目標的應用程式預期可在 4.6.2 或更新版本上執行,而不會發生問題。 因此,無需變更,這些應用程式即可在 Windows 10 版本 1607 版或更新版本,以及作業系統隨附的 .NET Framework 版本上安裝及執行。

    • 2.0 和 3.5:在我們的測試中,將這些 .NET Framework 版本設為目標的已封裝傳統型應用程式通常可以運作,但在某些情況下可能會出現效能問題。 為了讓這些封裝的應用程式能夠安裝和執行,必須在目標電腦上安裝 .NET Framework 3.5 功能 (此功能也包含 .NET Framework 2.0 和 3.0)。 您也應該在封裝這些應用程式之後徹底測試。

  • 您的應用程式需要驅動程式。 MSIX 不支援驅動程式。

  • 您的應用程式會寫入 AppData 資料夾或登錄,以便與其他應用程式共用資料。 轉換之後,系統會將 AppData 重新導向至本機 app 資料存放區,此為每一個應用程式的私人存放區。

    您的應用程式寫入至 HKEY_LOCAL_MACHINE 登錄區的所有項目都會重新導向至隔離的二進位檔,而應用程式寫入至 HKEY_CURRENT_USER 登錄區的任何項目都會放到私人的各個使用者、各個應用程式位置。 如需檔案和登錄重新導向的詳細資訊,請參閱傳統型橋接器的幕後作業

  • 您的應用程式會寫入應用程式的安裝目錄。 例如,您的應用程式所寫入的記錄檔是放在與 exe 相同的目錄中。 因為資料夾受到保護,所以不支援此功能。 建議您將寫入至另一個位置,例如本機應用程式資料存放區。 我們新增了一項功能,可在1809和更新版本中使用。

  • 您的應用程式會使用目前的工作目錄。 在執行階段,已封裝的傳統型應用程式將不會取得您先前在桌面 .LNK 捷徑中指定的相同工作目錄。 如果您的應用程式必須擁有正確的目錄才能正確運作,則需要在執行階段變更 CWD。

  • 您的應用程式會從 Windows 並列資料夾安裝與載入組件。 例如,您的應用程式會使用 C 執行時間程式庫 VC8 或 VC9,並以動態方式將它們連結到 Windows 並存資料夾,這表示您的程式碼會使用共用資料夾中的一般 DLL 檔案,例如 C:\ Windows \WinSxS。 不支援此連結方式。 您必須以靜態方式連結它們,方法是直接將可轉散發的程式庫檔案連結到您的程式碼。

其他考量

  • 在適當的架構上重新封裝您的安裝程式。 如果您的安裝程式想要安裝在 x86 電腦上。 請務必將您的安裝程式重新封裝至 x86 電腦上。 這適用于適用于 x64 電腦的安裝程式。

    注意

    如果您的應用程式需要寫入安裝目錄,或使用目前的工作目錄,您也可以考慮使用套件支援架構,將執行階段修復新增至套件。 如需詳細資料,請參閱這篇文章