微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

wix工具集:如何运行或不运行PowerShell,具体取决于DirectorySearch的结果

如何解决wix工具集:如何运行或不运行PowerShell,具体取决于DirectorySearch的结果

我正在创建一个包含Visual Studio Code exe文件的MSI软件包。 我写了目录搜索来检查Windows PC是否具有VS代码。然后,如果PC上没有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:

<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-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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。