如何创建安装程序,安装第三方安装程序(exe)并将自定义文件定位到同一目录?

时间:2014-12-17 08:52:06

标签: .net visual-studio wix installation inno-setup

我希望这个标题有意义,并不会误导我的要求。

我想将我的应用程序部署为安装文件,需要第三方依赖项。
目标:Windows 7/8

  • 我的应用程序(C#.NET项目)
  • 第三方工具(.exe设置)
    • [ - ]另外将RegKeys添加到系统中,具体取决于稍后我的应用程序所需的设置向导中所选的选项。
    • [+]支持静默安装(带参数)
    • setup.exe /S /D="C:\Program Files (x86)\3rd-Party"

我的应用程序应存储在与第三方相同的目录中 所以命令是静默安装setup.exe,并在完成之后; 我的申请应该位于同一个地方 可选地,设置可以检查第三方是否已经安装,但这不是必需的,因为静默安装/S不会对原始设备进行任何更改或导致任何问题。< / p>

安装向导应该跟进以下页面:

Setup StartPage -> Licens agreement -> Choose installion path -> Progress -> Finish.

选择安装应指向一个变量,该变量将用于静默安装第三方应用程序我的应用程序

在这种情况下,您建议使用什么?(仅限免费解决方案)
我简要介绍了Inno-Setup和WiX,但是对于这个小东西来说,它们似乎有些过分了 此外,我想指出我没有使用设置的脚本语言的经验。 (时间常数)

1 个答案:

答案 0 :(得分:0)

你还需要这个吗?使用WiX,这将是相当简单的:您需要制作两个项目:MSI打包您的额外文件,然后将该MSI和现有的setup.exe放入WiX软件包。

将参数传递给setup.exe以便以静默方式安装可以完成,但您必须先生成响应文件。 (使用/ s / r运行安装程序,然后找到setup.iss文件,通常在C:\ Windows中。)然后你必须通过&lt; InstallCommand&gt;传递它们。并且逃避报价可能很棘手。不要将setup.exe本身作为参数传递。要查看最终传递的内容,请查看安装日志。

下面概述了捆绑包所需的内容,主要是完整的代码:(你必须提出id's,然后设置显然是你机器上的东西的路径。)

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
      xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">

    <Bundle Name="some-cool-name-for-the-whole-thing"
        Version="1.0"
        UpgradeCode="your-guid-here">

    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
        <bal:WixStandardBootstrapperApplication
            LicenseUrl=""
            ShowVersion="yes"/>
    </BootstrapperApplicationRef>

    <Chain>

    <ExePackage Id="some_id"
        SourceFile="path-to-the-setup.exe">
    <CommandLine InstallArgument="/s /f1&quot;fullpath-to-your-iss-file.iss&quot;/>
    </ExePackage>

    <MsiPackage Id="some-other-id-here"
        SourceFile="path-to-the-MSI-you-made-for-your-app">
    </MsiPackage>


    </Chain>
    </Bundle>
    </Wix>


对于MSI,再次大致完整地描述了您的需求:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

    <Product Id="*"
    Name="name-of-your-app"
    UpgradeCode="some-unique-constant-guid-across-versions">

    <Package InstallerVersion="500" 
        Compressed="yes"<br>
        InstallScope="PerMachine"/>


    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />

    <MediaTemplate EmbedCab="yes" />


    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
           <Directory Id="my_app_install_dir" Name="My App" />
        </Directory>
    </Directory>

    <ComponentGroup Id="the-component-group-id" Directory="my_app_install_dir">

        <Component Id="some-other-id-name" Guid="{some-new-GUID}" >
            <File Id="some-id-1-for-your-file" Source="path-to-your-file" KeyPath="yes" />
         </Component>

         <Component Id="some-other-id2-name" Guid="{some-new-GUID2}">
             <File Id="some-id-2-for-your-another-file" Source="path-to-another-file" KeyPath="yes" />
         </Component>

    <!-- add more files as needed -->

    </ComponentGroup>

<Feature Id="some-feature-id" Title="some-title" Level="1">
    <ComponentGroupRef Id="the-component-group-id" />
    </Feature>
    </Product>
    </Wix>