未安装的MSI文件

时间:2013-05-28 13:40:01

标签: windows windows-installer system-administration

我目前正在为系统管理员开发一个工具,可用于更新Windows AD的所有客户端。它需要使用组策略和SMS进行批量更新。因此,我需要该工具来生成MSI文件。

是否可以创建一个安装任何内容的MSI文件,而只是执行自定义操作(即运行脚本或exe文件)。

最诚挚的问候Jakob Simon-Gaarde

2 个答案:

答案 0 :(得分:0)

是的,有可能。可耻,但是,可能。

你可以在圆孔中制作方形钉,但是你会失去所有预期的好处。

FWIW,SMS现在称为SCCM,它可以调用EXE命令。

答案 1 :(得分:-1)

找到一种解决我问题的黑客方法:

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

这可以运行我的可执行文件来执行一些基于调用Internet服务的配置,然后回滚安装,因为我强制发生错误。