如何解决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 "[#VSCodeExtension]",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 "[#VSCodeExtension]",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 举报,一经查实,本站将立刻删除。