我目前有一个使用NSIS的安装程序的项目,但是我想更新只有更改文件的新版本,并显示更改日志.目标平台是 windows.你有什么方法/建议呢?
您可能需要重新考虑使用NSIS.如果您正在修补和分发更新,您可能会最大程度地利用使用 Windows Installer功能(msiexec)的安装程序技术.

NSIS基本上是一个运行并执行所需操作的程序,而Windows Installer类型安装程序会强制您将应用程序拆分为可由Windows安装程序msi服务管理的功能和组件.无论您是否允许安装2个不同版本的产品,无论补丁是否可应用于特定版本的产品,MSI将跟踪您安装的产品版本,再次运行安装程序将以维护模式运行,任何其他有关更新和安装的问题.

如果您更改为Windows Installer技术,基本上您正在请求的大部分内容将可以开箱即用.而如果您使用NSIS(不使用Windows Installer技术),那么您将不得不自行实施.

作为一个例子,有一个非常全面的安装程序构建器称为AdvancedInstaller(http://www.advancedinstaller.com/),听起来像你想要的.或者,如果你想花费剩下的时间拖延论坛和新闻组,那么有一个名为WiX的开源产品,类似的;)

如何使用NSIS更新安装程序?的更多相关文章

  1. windows-7 – Nullsoft安装程序,如何使ProgramData子文件夹可写

    ProgramData文件夹是存储所有用户共享的应用程序可写文件的最佳位置.但是当Nsis安装程序以管理员权限运行时,在ProgramData文件夹中创建的文件夹和文件只对除admin之外的所有用户都是只读的.如何更改它并为ProgramData文件夹中的所有用户提供可写文件?我不知道这种行为是一个功能还是一个bug,但我找到了一个解决方法.需要AccessControl插件.在Nsis脚本的“安装”部分里面放了这样的东西:S-1-5-32-545相当于allusers,因此该代码将授予对所有用户的指定文

  2. windows – 使用NSIS更新%PATH%环境变量

    我读到“超过${NSIS_MAX_STRLEN}的字符串将被截断/损坏.”如何安全地更新%PATH%环境变量?您可以使用specialbuildspage中的替代NSIS构建,例如定义NSIS_MAX_STRLEN=8192的largestringsbuild,并且应该阻止您破坏主机路径.实际上,在台式机上,1024字节似乎已经足够了,但是在安装了许多工具的开发主机上,路径可能在操作后被破坏,而8192字节的字符串构建从未扰乱我的机器.非常确定,您可以在操作之前添加对路径长度的检查,并在尝试操作之前路径将

  3. 在NSIS中使用“ExecWait”时,禁止Windows命令输出

    我试图压制在NSIS中执行psql命令后弹出的输出窗口在看了这个link之后,我尝试了’>nul’.但这不起作用.要避免使用黑色DOS框,可以使用nsExec::Exec而不是Execwait.

  4. windows-services – 卸载Windows服务时,已安装的产品与安装源错误不匹配

    当我尝试从控制面板卸载Windows服务时,我收到错误“安装的产品与安装源不匹配,直到提供匹配的源或已安装的产品和源同步,此操作不能被执行“.实际上我确实有原始的MSI文件,但我在安装后修改了配置文件中的一些设置(安装它的地方),这可能导致它,我现在如何卸载它?您认为原始MSI可能不是真的.听起来你已经安装了PackageCode(GUID)A并且现在你有了一个带有PackageCodeB的MSI

  5. 无法在MSI中运行Wix自定义操作

    我正在尝试为我的Wix安装创建一个自定义操作,它只是不起作用,我不确定为什么.这是适当的Wix文件中的位:这是我的自定义操作的完整类文件:该操作由UI中的按钮按下(现在):当我运行MSI时,我在日志中收到此错误:它给我的两个错误代码或消息都不足以告诉我什么是错的.或许我只是不明白他们说的是错的.起初我以为可能是因为我使用的是Wix3.5,所以为了确保我尝试使用Wix3.0,但我得到了同样的错误.关于我做错的任何想法?

  6. 产品版本显示在WIX制作的MSI文件属性中?

    如何在MSI文件属性中显示产品版本?我们的安装程序是使用WIX创建的.我们只看到产品GUID在MSI文件属性的“详细信息”选项卡中显示为修订号.我们希望拥有产品版本,以便支持团队(和客户)可以轻松检查给定文件的版本.我不认为您可以在WIX中的MSI文件上实际设置文件版本.我们所做的是编辑Package的description属性.然后我们还确保产品使用相同的版本:该描述在MSI文件属性中可见,因此该描述中将显示该版本.我希望这就是你想要的!

  7. windows – 手动创建MSI补丁(.msp)?

    不是.补丁是两个可安装映像的增量.要生成增量,即使差异非常小,您也需要两个图像.

  8. WiX:在安装MSI期间显示“复制新文件文件:[1],目录:[9],大小[6]”

    如果是的话,有没有办法解决它?

  9. Windows安装程序 – 最简单的解决方案来替代MSI中的一个小文件?

    我们的许多客户都可以访问InstallShield,WISE或AdminStudio.这些都不是问题.我希望有一些方法可以为我们的小客户提供商业重新打包工具,这是一个免费提供的一套工具和步骤来进行文件替换.只需要更换压缩MSI中的单个配置文件,就可以假设目标用户已经安装了Orca,知道如何使用它来自定义属性表(嵌入GPO部署的许可证详细信息),并生成了一个MST文件.免责声明:这与anotherq

  10. .net – 如何手动删除MSI安装?

    我正在学习VS2008安装项目,为我们的C#应用程序创建安装.我在卸载期间试图删除exe本身是一个错误.现在我手动删除了exe文件,但条目仍然在AddRemoveProgram列表中.我尝试安装一个固定的较新版本,但msi不允许我这样做.如何手动删除旧版本?我正在使用XP机器.谢谢编辑:在卸载注册表项中的子项之后,我仍然无法安装我的新版本.使用msiexec/x{guid产品代码}.如果你的MSI数据库搞砸了,这不行,请试试msizap.

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部