簡體   English   中英

wix 工具集:如何根據 DirectorySearch 的結果運行或不運行 PowerShell

[英]wix toolset: How can I run or not run PowerShell depending on the result of DirectorySearch

我正在創建一個包含 Visual Studio Code exe 文件的 MSI 包。 我寫了目錄搜索來檢查Windows PC是否有VS代碼。 然后,如果 PC 沒有它,我想運行 PowerShell 來安裝 VSCode 並安裝幾個擴展。

現在,我確認目錄搜索和 PowerShell 正在工作。 但是,我很難弄清楚基於目錄搜索創建條件語句,然后運行 ​​PowerShell。

到目前為止,這是我的代碼: DirectorySearch:

<Property Id="VSCODEEXE">
  <DirectorySearch Id="ProgramFolderVScode64bi" Path="c:\Program Files\Microsoft VS Code\bin">
    <FileSearch Id="ProgramVScode64bit" Name="code.cmd" />
  </DirectorySearch>
  <DirectorySearch Id="ProgramFolderVScode32bit" Path="c:\Program Files (x86)\Microsoft VS Code\bin">
    <FileSearch Id="ProgramVScode32bit" Name="code.cmd" />
  </DirectorySearch>
  <DirectorySearch Id="LocalAppDataProgramFolderVScode" Path="[LocalAppDataFolder]\Programs\Microsoft VS Code\bin">
    <FileSearch Id="LocalAppDataProgramVScode" Name="code.cmd" />
  </DirectorySearch>
</Property>

電源外殼:

<powershell:File Id="InstallVSCode" File="[#InstallVSCode]" Arguments="-ErrorAction SilentlyContinue -AdditionalExtensions &quot;[#VSCodeExtension]&quot;, ms-azuretools.vscode-docker, ms-vscode.azurecli" />

這是我現在擁有的塊的條件代碼。 似乎powershell:File不是Feature預期子元素..... 但是我需要Feature來設置Level以使用 Condition..... 還有其他方法可以實現嗎?

  <Feature Id="VSCodeInstalledOrNot" Level="1">
    <powershell:File Id="InstallVSCode" File="[#InstallVSCode]" Arguments="-ErrorAction SilentlyContinue -AdditionalExtensions &quot;[#VSCodeExtension]&quot;, ms-azuretools.vscode-docker, ms-vscode.azurecli" />
    <Condition Level="0">VSCODEEXE</Condition>
  </Feature>

非常感謝,

一句小心的話。 雖然這不是法律建議,但對 github 問題的快速搜索表明 Microsoft 沒有將二進制重新分發權擴展到 VSCode。 如果未安裝 VSCode,您可能只能使用 AppSearch 和 LaunchConditions 來阻止安裝 MSI,並向用戶提供有關如何自行安裝的說明。

此外,通常最好使用 WiX Burn Bootstrappers 來檢測應用程序是否丟失並安裝它,然后在您的 MSI 中進行自定義操作。 對於 MSI 安裝尤其如此,因為 Windows Installer Mutex 會阻止一個安裝安裝另一個。 不過,VS Code 似乎不是 MSI。

暫無
暫無

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

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