我目前正在为系统管理员开发一种工具,该工具可用于更新 Windows AD 的所有客户端。它需要与组策略和 SMS 配合才能进行大规模更新。因此,我需要该工具来生成 MSI 文件。
是否可以创建一个不安装任何东西而只执行自定义操作(即运行脚本或 exe 文件)的 MSI 文件。
最好的问候雅各布·西蒙-加德
我目前正在为系统管理员开发一种工具,该工具可用于更新 Windows AD 的所有客户端。它需要与组策略和 SMS 配合才能进行大规模更新。因此,我需要该工具来生成 MSI 文件。
是否可以创建一个不安装任何东西而只执行自定义操作(即运行脚本或 exe 文件)的 MSI 文件。
最好的问候雅各布·西蒙-加德
对的,这是可能的。可耻,但是,可能。
您可以将方形钉安装在圆孔中,但您会失去所有预期的好处。
FWIW,SMS现在称为SCCM,它可以调用EXE命令。
找到了解决我的问题的黑客方法:
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product
Name='MVLicense Updater' Id='f8fc0a30-c138-1fe2-838b-0845200c9a66'
UpgradeCode='00ca86a0-c889-12e2-8f8b-0800200c9a66'
Language='1033' Version='1.0.0.0' Manufacturer='My Company'>
<Package Id='*' InstallerVersion='200' Compressed='yes' />
<Media Id='1' Cabinet='my.cab' EmbedCab='yes' />
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder'>
<Directory Id='INSTALLDIR' Name='My-Updater'>
<Component Id='Readme' Guid='68fef080-c87b-34e2-8889-0824200c9a66'>
<File Id='ReadmeTXT' Name='readme.txt' Source='readme.txt' Vital='no' />
<RemoveFolder Id="INSTALLDIR" On="uninstall" />
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id='Complete' Level="1">
<ComponentRef Id='Readme' />
</Feature>
<CustomAction Id="ForceError" Error="1602"/>
<CustomAction Id="RunMyUpdater" BinaryKey="MyUpdaterExe" ExeCommand="dummy" Return="check"/>
<InstallExecuteSequence>
<Custom Action='RunMyUpdater' After='InstallInitialize'></Custom>
<Custom Action="ForceError" After="RunMvlupdate"></Custom>
</InstallExecuteSequence>
<AdminExecuteSequence>
<Custom Action='RunMyUpdater' After='InstallInitialize'></Custom>
<Custom Action="ForceError" After="RunMyUpdate"></Custom>
</AdminExecuteSequence>
<Binary Id="MyUpdaterExe" SourceFile="dist\myupdater.exe" />
<UI>
<Error Id="1602">We have a problem</Error>
</UI>
</Product>
</Wix>
这完成了运行我的可执行文件的工作,该可执行文件基于调用互联网服务进行一些配置,然后回滚安装,因为我强制发生错误。