代码之家  ›  专栏  ›  技术社区  ›  Evgeny

Bootstrapper:如何在单个.msi包中编译应用程序和必备项?

  •  3
  • Evgeny  · 技术社区  · 17 年前

    我正在使用Visual Studio 2005引导程序执行此任务。 找到文件夹C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\,并为我的必备项创建了一个文件夹(使其结构与“dotnetfx”相同);创建了“product.xml”和“package.xml”,并适当地放置了它们。到目前为止,为了测试安装,我保持了xml文件的简单性:

    product.xml

    <?xml version="1.0" encoding="utf-8"?>
    <Product ProductCode="MyPrereq" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
      <PackageFiles CopyAllPackageFiles="false">
        <PackageFile Name="MyPrereq.exe" />
      </PackageFiles>
      <InstallChecks>
      </InstallChecks>
      <Commands Reboot="None">
        <Command PackageFile="MyPrereq.exe" EstimatedInstallSeconds="90">
          <InstallConditions>
          </InstallConditions>
          <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
            <DefaultExitCode Result="Fail" String="GeneralFailure" FormatMessageFromSystem="true" />
          </ExitCodes>
        </Command>
      </Commands>
    </Product>
    

    package.xml

    <?xml version="1.0" encoding="utf-8"?>
    <Package Name="MyPrereq" Culture="Culture" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
      <Strings>
        <String Name="Culture">en</String>
        <String Name="DisplayName">MyPrereq</String>
        <String Name="GeneralFailure">A fatal error occurred. The installation failed.</String>
      </Strings>
    </Package>
    

    现在,我可以从列表中添加先决条件并构建我的安装项目。

    问题:

    我知道。NET框架是我的应用程序的另一个前提条件,它包含在同一个.msi中,所以这应该是可能的。

    2 回复  |  直到 17 年前
        2
  •  3
  •   Evgeny    17 年前

    然而,不得不使用一个小技巧,如下所述 Creating a bootstrapper for a VS Shell application

    不幸的是,MSBuild任务 更新相应的资源文件 同名子目录。

  • 在Visual Studio中打开Setup.exe程序
  • 双击 41中名为SETUPCFG的资源 文件夹
  • 搜索“Vs Shell” 出现
  • 保存资源文件 Setup.exe可执行文件将是
  • 运行iexpress
  • 按照以下步骤创建新包 包括以下文件:
  • 这 MyVSShellApplication.msi文件
  • 这 vs_shell_isolated.enu.exe文件