我们有跨越许多项目的大型 C# 应用程序,通过在 .VDProj 文件上运行 MSBuild(或通过 Visual Studio 2010)打包到 .MSI 文件中。安装通常可以正常工作,如果在本地计算机上找不到其他必需的软件,则会正确发出警告。
但是,如果安装成功,我们希望安装程序将自身复制到程序文件中的某个特定文件夹中。例如'c:\program files\app\version\install_1.2.3.4.msi'。
有谁知道这样做的任何方法?
我们有跨越许多项目的大型 C# 应用程序,通过在 .VDProj 文件上运行 MSBuild(或通过 Visual Studio 2010)打包到 .MSI 文件中。安装通常可以正常工作,如果在本地计算机上找不到其他必需的软件,则会正确发出警告。
但是,如果安装成功,我们希望安装程序将自身复制到程序文件中的某个特定文件夹中。例如'c:\program files\app\version\install_1.2.3.4.msi'。
有谁知道这样做的任何方法?
您可以从OriginalDatabase属性中获取 MSI 路径。要复制 MSI,您可以使用在 InstallFinalize 标准操作之后安排的自定义操作。
例如,您可以编写一个简单的 EXE,它接收 [OriginalDatabase] 作为参数并执行复制操作。
InstallFinalize 未显示在 Visual Studio 中。您可以在 Install 下添加自定义操作,并使用ORCA编辑 MSI 以在InstallExecuteSequence表中的 InstallFinalize 之后更改其顺序。
您可以通过使用其他设置创作工具来更好地控制自定义操作。