标签: setup-project

更新GAC dll

我在GAC中注册了一个DLL,其中有一个错误(v4.2.0).

因此,我修复了该错误,仅更新了文件版本(v4.2.1)(保留了程序集版本,v4.2.0)并构建了一个新的MSI包.

问题是DLL没有安装在GAC中.我通过右键单击DLL验证了这一点C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MyDLL\v4.0_4.2.0.0__2269313d92725976并检查了文件版本,这仍然v4.2.0是没有在其下创建的其他文件夹C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MyDLL.

但!如果我卸载第一个版本,然后安装新的DLL,它就会在GAC中安装好.

我是以错误的方式接近这个吗?我们的应用程序设置为使用特定版本,因此只需创建程序集版本v4.3.0并将其安装在GAC中就行不通.

更新

我找到了有关发布商政策的文章(http://support.microsoft.com/kb/891030)并正在尝试这样做.我已经生成了策略程序集.但是当我尝试将它添加到安装项目时,Visual Studio崩溃=(

我还尝试将其作为内容文件添加到主项目中(然后将内容文件添加到GAC).但后来它抱怨集会没有签署.

所以我仍然被困住了.

c# gac setup-project visual-studio-2010

8
推荐指数
1
解决办法
1万
查看次数

Visual Studio:在安装项目中有条件地创建快捷方式?

我正在使用Visual Studio中的安装项目,我希望用户能够使用复选框指定是否创建桌面快捷方式和/或程序的开始菜单快捷方式.

我可以让安装程序在适当的位置创建工作快捷方式,并添加了一个包含安装程序复选框的对话框; 但是,我无法将这些快捷方式的创建(或缺少)与这些复选框的状态相关联.

我假设我需要设置"条件"属性,但我不确定具体的语法.这是可能的,如果是这样,我将如何实现这一目标?

windows-installer setup-project visual-studio-2008

7
推荐指数
2
解决办法
6773
查看次数

如何使System.Configuration.Install.Installer从安装项目中获取变量?

我的解决方案中有2个项目

  1. Windows服务

  2. 它的安装项目

我需要我ProjectInstaller : System.Configuration.Install.Installer的方法调用OnAfterInstall来ProductName从安装项目中获取.我怎么做?

.net c# windows-installer setup-project visual-studio

7
推荐指数
1
解决办法
1万
查看次数

Windows服务和事件日志的安装项目

我有一个安装Windows服务的安装项目.

我们在自定义日志中注册了一个事件日志源,应该由winservice项目使用(如何以及为什么不重要).

我的问题是安装项目尝试默认创建事件日志源.通过这样做它得到一个错误消息("Error 1001" source XXX already exists on local computer)并回滚.

我到处寻找,我无法找到注册的位置或如何关闭它.

如何强制Windows服务或安装项目不创建事件日志源?

eventlog-source setup-project visual-studio

7
推荐指数
1
解决办法
6170
查看次数

创建安装项目时如何使用最终的{project} .exe.config文件

我已经为dev和prod创建了一个具有特定app.config的控制台应用程序(blah.exe).这些是命名dev_app.configprod_app.config.我已经AfterBuild在我的csproj文件*中连接了一个目标,它将正确的配置文件复制到bin目录中blah.exe.config.

我还为这个控制台应用程序创建了一个安装项目,但我遇到了一个小问题.似乎安装项目使用app.config项目目录中的实际而不是最终blah.exe.config(位于bin目录中).

|--Bin
|  |--Debug
|     |--Blah.exe.config <--- I want the setup project to use this file
|--app.config <--- Setup project uses this file at the moment
|--dev_app.config
|--prod_app.config
Run Code Online (Sandbox Code Playgroud)

如何强制安装项目使用bin文件夹中生成的最终配置文件而不是实际app.config文件?

附加信息:

我当前的解决方案涉及添加另一个AfterBuild覆盖实际app.config文件的命令.我不喜欢接近,因为它迫使我有一个我不需要的额外文件.此外,由于我对app.config构建时被覆盖的文件进行了更改,因此拥有此文件已经让我感到悲痛.问题是如何让安装项目使用bin文件夹中的最终配置文件,而不是如何管理配置或创建配置文件的方法.

*改编自基于构建配置部署app.config

c# installer setup-project visual-studio-2010

7
推荐指数
1
解决办法
3009
查看次数

自动增加Visual Studio安装程序项目版本号

我使用Visual Studio安装项目为我的.Net应用程序创建MSI.如果我可以自动增加版本号,那就太好了.更好的方法是将安装程序版本设置为等于主输出exe的AssemblyVersion.

windows-installer setup-project visual-studio

7
推荐指数
1
解决办法
1940
查看次数

自定义操作不起作用 - Visual Studio安装项目

过去,我们使用Advanced Installer为特定项目构建我们的.msi安装程序.我们的高级安装程序的年度许可证已过期,因此为了避免续订成本,并且因为我认为可以使用Visual Studio完成相同的操作,所以我尝试使用Visual Studio 2010安装项目来构建我的.msi.

在大多数情况下,我使用Visual Studio构建的安装程序工作正常.但是,我们需要安装程序执行的一件事是运行几个.reg文件以向注册表添加大量设置(可能值得注意的是,这是旧软件,只有在更换后才会进行维护和更新完全在不久的将来.改变我们存储设置的方法是不切实际的).使用Advanced Installer,我们能够执行.cmd文件作为"安装"自定义操作,该操作将运行安装中也包含的这些.reg文件.VS安装项目具有自定义操作,但似乎在这里它们必须是.dll.exe文件,因此我必须找到使用.bat.cmd文件的替代方法.

首先,我尝试将一个命令行项目添加到我的解决方案中,该解决方案仅包含main()方法中的以下行:

using (Process registryInput = Process.Start("regedit.exe", "/s Settings1.reg"))
{
    registryInput.WaitForExit();
}

using (Process registryInput= Process.Start("regedit.exe", "/s Settings2.reg"))
{
    registryInput.WaitForExit();
} 
Run Code Online (Sandbox Code Playgroud)

我将此项目的主要输出添加到"自定义操作"编辑器的"安装"文件夹中.试图运行安装程序,但命令行进程似乎从未运行过,也没有安装任何注册表设置.如果我从安装它的应用程序目录手动运行命令行可执行文件,它会按预期添加注册表项 - 所以问题不在于我用来调用.reg文件的代码.

我转向MSDN并更改了我的解决方案,以便在他们的自定义操作演练之后进行建模.我创建了一个类库项目(并删除了我的命令行项目)并添加了一个安装程序类.我们没有在其示例中所示的Commit()方法中使用Microsoft的网站URL启动浏览器,而是将上面的代码添加到Install()方法中.这是我最终得到的:

[RunInstaller(true)]
public partial class Installer1 : System.Configuration.Install.Installer
{
    public Installer1()
    {
        InitializeComponent();
    }

    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
    public override void Install(IDictionary stateSaver)
    {
        base.Install(stateSaver);

        using (Process registryInput = Process.Start("regedit.exe", "/s Settings1.reg")) …
Run Code Online (Sandbox Code Playgroud)

registry installer custom-action setup-project visual-studio-2010

7
推荐指数
1
解决办法
1万
查看次数

特殊文件夹"Common Application Data Folder"在我的安装项目中不可用.为什么?

我想创建一个Visual Studio 2010安装项目,将一些文件部署到我的应用程序可以使用它的文件夹中.我希望如此,所有用户都拥有相同的文件,并且他们也可以在没有管理员权限的情况下操纵它们.

因此,如本MSDN文章中所述的 "通用应用程序数据文件夹"*似乎很好.

但是,在我的Visual Studio 2010安装项目中,我没有在"添加特殊文件夹..."下拉菜单中找到"通用应用程序数据文件夹".

我有一个.NET 4.0 WinForms应用程序,并没有看到为什么这不显示.用户的通用应用程序数据文件夹是有的,但我的用途不匹配.

谢谢你的任何提示!

setup-project visual-studio-2010 special-folders winforms

7
推荐指数
2
解决办法
7990
查看次数

Visual Studio 设置项目:更新不起作用

我几天来一直面临一个问题,经过多次研究后,我找不到任何适合我的情况的东西。

事情是这样的:我正在使用 Visual Studio 2010 开发一个包含多个项目和一个安装项目的解决方案。我希望安装项目创建一个 MSI 文件以将产品从版本 1.5 更新到版本 1.6。

我遵循了本教程http://www.simple-talk.com/dotnet/visual-studio/updates-to-setup-projects/并更新了解决方案每个项目的程序集版本和文件版本号。

我的安装项目的设置是:
DetectNewerInstalledVersion : True
InstallAllUsers : True
RemovePreviousVersions : True
Version : 1.6.3
ProductCode 与以前版本的 ProductCode 不同
,UpgradeCode 与以前版本的 UpgradeCode 相同。

我读到,通常 MSI 应该删除版本比现有文件新的文件并替换为新文件。当我运行以前的 MSI(将产品从 1.4 更新到 1.5 的 MSI)时,它工作得很好,正如所描述的那样。(我不确定它是用哪个版本的 Visual Studio 编译的,但我猜是用 VS2008 编译的)。

现在,当我运行 MSI 时,它似乎首先运行“安装序列”,用新的 .exe 替换旧的 .exe,然后运行“卸载序列”,擦除 .exe。当安装“完成”时,我的应用程序目录中不再有 .exe。(但是,在“添加/删除程序”面板中,该产品显示为安装在版本 1.6 中)。

(注意:我可以注意到 MSI 的“安装”部分或“卸载”部分何时运行,因为两者都有打开控制台应用程序的自定义操作,我可以在其中进行跟踪)。

经过更多研究,我将旧的 MSI 与我的 ORCA 进行了比较,我注意到 InstallExecuteSequence 表中的差异:
对于旧的 MSI,RemoveExistingProducts 的序列号是1525,介于 InstallInitialize (1500) 和 AllocateRegistrySpace (1550) 之间。 …

windows-installer setup-project visual-studio-2010 visual-studio-setup-proje

7
推荐指数
1
解决办法
6638
查看次数

如何使用某些脚本为wpf 4.5应用程序创建安装程序包

我需要通过脚本为我的WPF应用程序创建可安装的设置.我不知道从哪里开始,最好的方法是什么.请帮忙.

c# wpf installer setup-project .net-4.5

7
推荐指数
1
解决办法
2万
查看次数