Wix-burn不';不允许删除文件

Wix-burn不';不允许删除文件,wix,windows-installer,installation,burn,Wix,Windows Installer,Installation,Burn,我正在创建一个bootsrapper,我想删除在安装过程中创建的链接。所以我写了以下步骤: <Chain> ... <ExePackage Id="removelnk" Cache="no" SourceFile="run.bat" InstallCommand="del &quot;C:\Users\Public\Desktop\Parity UI.lnk&quot;" /> </Chain> 如果我从登录我的cmd执行此命令,那么

我正在创建一个bootsrapper,我想删除在安装过程中创建的链接。所以我写了以下步骤:

<Chain>
  ...
  <ExePackage Id="removelnk" Cache="no" SourceFile="run.bat" InstallCommand="del &quot;C:\Users\Public\Desktop\Parity UI.lnk&quot;" />
</Chain>
如果我从登录我的
cmd
执行此命令,那么它将按预期工作。它甚至可以在没有管理员权限的情况下工作


这里怎么了?

刻录不支持批处理文件。所有修改机器的操作都应该在一个包中完成。

Burn不支持批处理文件。修改机器的所有操作都应该在一个包中完成。

创建转换:您可以使用来修改任何MSI文件-转换的一个常见用途是删除此类快捷方式。您应该能够在引导程序中指定的命令行上应用该转换,尽管我从未在WiX引导程序中尝试过

转换是应用于原始MSI的“小数据库片段”。它改变了内存中的MSI文件,你几乎可以改变你想要的任何东西。可以使用创建变换。当然,也可以使用商业工具,如高级安装程序。事实上,它们(朝底部)移动了

这里有一个关于转换的详细解释:


应用变换:在安装过程中通过应用变换

快速示例命令行:

快速参数解释:


Burn Bundle Details:我没有尝试在Burn Bundle中应用转换(因此我应该有不回答的感觉),但我相信这正是您需要的。一个Burn bundle源文件的示例-也许值得一看?看来魔术正在为未来而努力


更新

Burn Hello World风格示例:终于在Windows计算机上运行了一个快速测试(在Linux计算机上)以下是如何通过Burn应用转换的方法(最少的示例,仅用于显示基本信息,而不是假装良好的标记)


只是内联警告:我听到一些谣言说 以这种方式进行的转换可能不会在所有情况下都起作用,例如 修理。请彻底测试。它对我的测试有效。还要测试升级场景(例如主要升级)

这将把转换
ShortcutDesktop.mst
应用于原始MSI
ShortcutDesktop.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示例的链接:

创建转换:您可以使用来修改任何MSI文件-转换的一个常见用途是删除此类快捷方式。您应该能够在引导程序中指定的命令行上应用该转换,尽管我从未在WiX引导程序中尝试过

转换是应用于原始MSI的“小数据库片段”。它改变了内存中的MSI文件,你几乎可以改变你想要的任何东西。可以使用创建变换。当然,也可以使用商业工具,如高级安装程序。事实上,它们(朝底部)移动了

这里有一个关于转换的详细解释:


应用变换:在安装过程中通过应用变换

快速示例命令行:

快速参数解释:


Burn Bundle Details:我没有尝试在Burn Bundle中应用转换(因此我应该有不回答的感觉),但我相信这正是您需要的。一个Burn bundle源文件的示例-也许值得一看?看来魔术正在为未来而努力


更新

Burn Hello World风格示例:终于在Windows计算机上运行了一个快速测试(在Linux计算机上)以下是如何通过Burn应用转换的方法(最少的示例,仅用于显示基本信息,而不是假装良好的标记)


只是内联警告:我听到一些谣言说 以这种方式进行的转换可能不会在所有情况下都起作用,例如 修理。请彻底测试。它对我的测试有效。还要测试升级场景(例如主要升级)

这将把转换
ShortcutDesktop.mst
应用于原始MSI
ShortcutDesktop.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让我创建一个安装程序哪一个功能是删除机器上的一些文件?好吧,如果可以的话,我想这么做,但我把引导程序放在上面的不是我的安装程序。我想知道是否可以自动删除另一个MSI创建的快捷方式。@Alex您的建议是损坏已安装的组件。您的更改可能会被“修复”撤消。所以,burn让我创建一个安装程序,其中一个功能是删除计算机上的某些文件?好吧,如果可以的话,我很想这样做,但我把引导程序放在上面的不是我的安装程序。我想知道是否可以自动删除另一个MSI创建的快捷方式。@Alex您的建议是损坏已安装的组件。您的更改可能会被“修复”撤消。请查看MSI中哪些功能具有具有快捷方式的组件。(请尝试dark.exe或orca或InstEdit)如果可以不使用该功能,只需在安装期间将其排除即可。否则,按照@Stein的建议执行。查看MSI中的哪些功能具有具有快捷方式的组件。(请尝试dark.exe或orca或InstEdit)如果可以不使用该功能,只需在安装期间将其排除即可。否则,按照@Stein的建议去做。我还没有尝试过,但它看起来真的很有希望。回答得很好,谢谢。我听到一些传言说,以这种方式应用转换可能不会在所有情况下都有效,例如修复。请彻底测试。它对我的测试有效。我还没试过,但看起来很有希望。回答得很好,谢谢你
/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