gpt4 book ai didi

.net - 为 Wix 安装程序构建项目

转载 作者:行者123 更新时间:2023-12-04 23:57:56 25 4
gpt4 key购买 nike

我正在尝试为我们的应用程序创建一个 Wix 安装程序。 Wix 项目收获不起作用,因为它只将主 exe 文件复制到安装目录,不会复制所有 dll 等。

所以我想有一个预构建事件来构建应用程序并使用 Wix 的输出。

问题是输出将包含 .pdb、vchost.exe 等文件。我可以配置构建以使其仅输出所需的文件吗?

编辑:最终解决方案可以在这里找到
https://github.com/AndersMalmgren/FreePIE/blob/master/BuildTools

从查看开始
https://github.com/AndersMalmgren/FreePIE/blob/master/BuildTools/build_installer.bat

最佳答案

当我为我的项目创建任何类型的安装程序/zip 文件/任何内容时,我从来没有在 Visual Studio 的“标准”构建中这样做,即在 .csproj 中文件。
(我知道这就是您尝试放置预构建事件的地方 - 对吗?)
原因是我不想在我编程时在每次构建时重建安装程序/zip。
我经常做的:
我创建了一个 MSBuild project file我可以从资源管理器(通常通过批处理文件)手动执行,它编译 Visual Studio 解决方案,然后创建 zip 文件、安装程序、NuGet 包或我需要的任何东西。
因此,创 build 置完全在 Visual Studio 解决方案之外,但我可以从源代码管理中提取最新更改,然后构建所有内容并单击一下即可创 build 置。
( Joel Test ,第二个问题:“你能一步完成构建吗?”)
当我不需要 Visual Studio 放入输出文件夹的所有内容时,我只需先将我需要的文件复制到其他文件夹。
这是我的一个项目的示例:

  • The MSBuild file
    最后一段(“copy files to release folder”)复制了\bin\Release的内容文件夹(但不包括 *.pdb*.xml 文件)和一些从根文件夹到单独的“发布”目录的文件:
     <!-- copy files to release folder -->
    <Target Name="CopyRelease">
    <MakeDir Directories="$(ReleaseDir)"/>
    <ItemGroup>
    <ReleaseFiles
    Include="$(OutDir)\**\*.*;
    README.md;
    License.rtf"
    Exclude="$(OutDir)\*.pdb;
    $(OutDir)\*.xml">
    </ReleaseFiles>
    </ItemGroup>
    <Copy SourceFiles="@(ReleaseFiles)" DestinationFiles="@(ReleaseFiles -> '$(ReleaseDir)\%(RecursiveDir)%(Filename)%(Extension)')"/>

    </Target>
  • The batch file that I use to execute the MSBuild file
    批处理文件中有更多代码(用于处理版本号等内容),但我执行 MSBuild 文件的重要部分是:
     rem path to msbuild.exe
    path=%path%;%windir%\Microsoft.net\Framework\v4.0.30319

    rem go to current folder
    cd %~dp0

    msbuild build.proj

  • 我实际上是在使用 WiX 为这个项目构建安装程序,但我没有使用你正在使用的“收获”功能(我之前不知道)。
    我只是在 WiX project file 中为安装程序指定每个文件,然后我使用 another batch file构建项目(通过调用上面提到的第一个批处理文件),然后是 WiX 设置。
    即使我对实际 WiX 工具的使用与您的不同,您仍然可以使用类似于上面解释的方法来为 WiX 的收获功能创建“源文件夹”:
    调用一个批处理文件,将您需要的文件准确复制到不同的文件夹,并使用 那个作为创建安装程序的源。
    如果您不想创建 MSBuild 文件,您甚至可以使用类似 Robocopy 的内容。 (它能够镜像一个完整的文件夹,但排除某些文件扩展名)。

    编辑:
  • 尝试构建完整的解决方案,而不仅仅是一个项目。
    将包含以下内容的批处理文件放在您的 .sln 所在的文件夹中文件是:
     set PATH=%PATH%;%WINDIR%\Microsoft.Net\Framework64\v4.0.30319

    rem go to current folder
    cd %~dp0

    msbuild YourSolution.sln /p:Configuration=Release
  • 第二个错误说明了 PreBuildEvent target--> 你是否已经在你的 .csproj 的预构建事件中加入了一些东西? ?也许那行不通。

  • 编辑2:
    我正在做类似的事情:
    我只有一个 batch file将版本号(在我的情况下是硬编码的)放入环境变量中,然后我从 main build batch 调用该批处理文件在进行实际构建之前。
    在我的 .csproj , 我有一个 pre-build event将程序集版本号设置为环境变量中的值(如果存在),否则设置为 0.0 .
    (当我从 Visual Studio 构建时,我不关心版本号 - 我使用批处理文件创建所有发布版本,所以我只需要那里的版本号)

    编辑 3:

    Last step, get the entire output into Wix, you link each file, thats not practicle in mu project. its several sub folders, and thousand of files. Any good idea on how to link the entire output folder in wix?


    抱歉,我以前从未尝试过这个。使用 WiX 的正确方法是 to build the setup incrementally right from the beginning .
    引用链接(我强调):

    Typing all those hundreds or thousands of components into the WiXsource file presents another challenge, of course. The toolset has asmall utility that can help with this (more about it later) but thereal solution is a conceptual change. Stop considering the setupprogram as a separate application that has to be written in a rushwhen the main application is already finished. As the WiX source filesand the toolset itself can be integrated into your developmentenvironment easily, you should keep them in sync all the time. As soonas you start working on a new module or add a new registry referenceto your program, modify the corresponding WiX source file at the sametime. This way, the setup will be finished together with theapplication itself and there will be no need to extract all the fileand other pieces of information required for the installation later.As the WiX project can be modularized (more about this later), thisapproach works just as well if you have a large team working on theapplication rather than a single developer.


    link in the quoted text指向描述 Heat 的页面工具,这似乎是您之前提到的“收获”工具,并且已经尝试过但没有成功。

    关于.net - 为 Wix 安装程序构建项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791559/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com