Wix-burn不';不允许删除文件
我正在创建一个bootsrapper,我想删除在安装过程中创建的链接。所以我写了以下步骤:Wix-burn不';不允许删除文件,wix,windows-installer,installation,burn,Wix,Windows Installer,Installation,Burn,我正在创建一个bootsrapper,我想删除在安装过程中创建的链接。所以我写了以下步骤: <Chain> ... <ExePackage Id="removelnk" Cache="no" SourceFile="run.bat" InstallCommand="del "C:\Users\Public\Desktop\Parity UI.lnk"" /> </Chain> 如果我从登录我的cmd执行此命令,那么
<Chain>
...
<ExePackage Id="removelnk" Cache="no" SourceFile="run.bat" InstallCommand="del "C:\Users\Public\Desktop\Parity UI.lnk"" />
</Chain>
如果我从登录我的cmd
执行此命令,那么它将按预期工作。它甚至可以在没有管理员权限的情况下工作
这里怎么了?刻录不支持批处理文件。所有修改机器的操作都应该在一个包中完成。Burn不支持批处理文件。修改机器的所有操作都应该在一个包中完成。创建转换:您可以使用来修改任何MSI文件-转换的一个常见用途是删除此类快捷方式。您应该能够在引导程序中指定的命令行上应用该转换,尽管我从未在WiX引导程序中尝试过 转换是应用于原始MSI的“小数据库片段”。它改变了内存中的MSI文件,你几乎可以改变你想要的任何东西。可以使用创建变换。当然,也可以使用商业工具,如高级安装程序。事实上,它们(朝底部)移动了 这里有一个关于转换的详细解释:
应用变换:在安装过程中通过应用变换 快速示例命令行: 快速参数解释:
Burn Bundle Details:我没有尝试在Burn Bundle中应用转换(因此我应该有不回答的感觉),但我相信这正是您需要的。一个Burn bundle源文件的示例-也许值得一看?看来魔术正在为未来而努力
更新: Burn Hello World风格示例:终于在Windows计算机上运行了一个快速测试(在Linux计算机上)以下是如何通过Burn应用转换的方法(最少的示例,仅用于显示基本信息,而不是假装良好的标记)
只是内联警告:我听到一些谣言说 以这种方式进行的转换可能不会在所有情况下都起作用,例如 修理。请彻底测试。它对我的测试有效。还要测试升级场景(例如主要升级) 这将把转换
ShortcutDesktop.mst
应用于原始MSIShortcutDesktop.MSI
:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<!-- Maybe generate yourself an Upgrade-GUID here: https://www.guidgenerator.com/ -->
<Bundle Name="MyCoolTestApp" Version="1.0.0.0" Manufacturer="Someone"
UpgradeCode="PUT-GUID-HERE">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<MsiPackage SourceFile="ShortcutDesktop.msi">
<MsiProperty Name="TRANSFORMS" Value="ShortcutDesktop.mst" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>
还有一个指向github上更好的Burn示例的链接:
应用变换:在安装过程中通过应用变换 快速示例命令行: 快速参数解释:
Burn Bundle Details:我没有尝试在Burn Bundle中应用转换(因此我应该有不回答的感觉),但我相信这正是您需要的。一个Burn bundle源文件的示例-也许值得一看?看来魔术正在为未来而努力
更新: Burn Hello World风格示例:终于在Windows计算机上运行了一个快速测试(在Linux计算机上)以下是如何通过Burn应用转换的方法(最少的示例,仅用于显示基本信息,而不是假装良好的标记)
只是内联警告:我听到一些谣言说 以这种方式进行的转换可能不会在所有情况下都起作用,例如 修理。请彻底测试。它对我的测试有效。还要测试升级场景(例如主要升级) 这将把转换
ShortcutDesktop.mst
应用于原始MSIShortcutDesktop.MSI
:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<!-- Maybe generate yourself an Upgrade-GUID here: https://www.guidgenerator.com/ -->
<Bundle Name="MyCoolTestApp" Version="1.0.0.0" Manufacturer="Someone"
UpgradeCode="PUT-GUID-HERE">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<MsiPackage SourceFile="ShortcutDesktop.msi">
<MsiProperty Name="TRANSFORMS" Value="ShortcutDesktop.mst" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>
还有一个指向github上更好的Burn示例的链接:
/I = run installation sequence
/QN = run completely silently
/L*V "C:\My.log"= verbose logging
TRANSFORMS="C:\1031.mst;C:\My.mst" = Apply transforms 1031.mst and My.mst.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<!-- Maybe generate yourself an Upgrade-GUID here: https://www.guidgenerator.com/ -->
<Bundle Name="MyCoolTestApp" Version="1.0.0.0" Manufacturer="Someone"
UpgradeCode="PUT-GUID-HERE">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<MsiPackage SourceFile="ShortcutDesktop.msi">
<MsiProperty Name="TRANSFORMS" Value="ShortcutDesktop.mst" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>
set SetupName=BurnTest
candle.exe %SetupName%.wxs -ext WixBalExtension >> %SetupName%.log
light.exe %SetupName%.wixobj -ext WixBalExtension >> %SetupName%.log