3

我在 Visual Studio 2013 中有一个包含许多不同项目的解决方案。其中之一是 C# 屏幕保护程序,构建为 Windows 应用程序(文件扩展名为“.exe”)。现在我希望将该屏幕保护程序打包到 Visual Studio 设置项目中。但在安装项目中,我只能包含 C# 项目的“主要输出”,以便将输出文件原封不动地打包到 msi 文件中。有没有办法在 C# 项目设置或安装程序本身中更改文件扩展名(它必须是 .scr)?当我在 postbuild 事件中通过批处理/MSBuild 顺序更改文件名时,无法再找到设置的“主要输出”。奇怪的是:设置中已经有一个选项显示“TargetName”,但它是灰色的,我无法在 IDE 中更改它,我也无法在安装项目的项目文件中找到该选项。谢谢你的帮助!

编辑1:

简单地重命名输出文件以将其包含在设置中,是否有绝对没有解决方案?

4

1 回答 1

1

由于我发现绝对没有解决方案来配置我的安装程序以重命名文件,我最终创建了一个带有 InstallerClass 的附加 DLL,以便在安装过程中将其作为自定义操作运行。

这是一个很好的示例,如何为有类似问题的任何人做到这一点

Visual Studio 安装项目(代码项目)中的自定义操作

我只是在 Install 方法中重命名了该文件,然后在 Uninstall 方法中将其重命名,以便正确删除它。

    public override void Install(IDictionary stateSaver)
    {
        base.Install(stateSaver);
        var text = Context.Parameters["ScreensaverPath"];
        var file = new FileInfo(text + "MyScreenSaver.exe");
        if (!file.Exists)
            return;
        file.MoveTo(text + "MyScreenSaver.scr");
    }

    public override void Uninstall(IDictionary savedState)
    {
        base.Uninstall(savedState);
        var text = Context.Parameters["ScreensaverPath"];
        var file = new FileInfo(text + "MyScreenSaver.scr");
        if (!file.Exists)
            return;
        file.MoveTo(text + "MyScreenSaver.exe");
    }
于 2014-06-27T13:35:30.490 回答