多年来,我使用Inno Setup为所有Delphi工具创建了设置.现在一些用户更喜欢MSI安装包,因此他们可以将设置从中央服务器部署到所有工作站.
我该如何创建一个?我是否必须购买Visual Studio或其他产品?
我目前正在调查我们目前正在使用的安装包(Wise Installer 9),并转向处理Windows Vista,Windows 7和64位系统之类的东西.安装人员的本地化将是有益的,因为我们也有许多加拿大法国客户.
我们目前使用以下技术安装软件包和实用程序:
我已经看过WiX和InstallShield,Altiris还替换了旧的Wise系统.
我还没有玩过很多关于InstallShield的东西,但是从我见过/安装过的所有东西来看,它似乎都是业界的最爱之一.我浏览了一些与InstallShield相关的Stack Overflow标签,我很想知道该组织对此有何看法.
我是否只是默认情况下去找他们?WiX在非.NET的东西有多好?
installer windows-installer installshield wix advanced-installer
我想提取EXE设置的MSI以通过网络发布.
例如,使用Universal Extractor,但它不适用于Java Runtime Environment.
我们目前使用WiX来构建我们的MSI文件,因此它是我使用过的唯一一个MSI构建器.我知道您可以在Visual Studio中本地构建安装程序.使用WiX和Windows Installer有什么区别,各自的优缺点是什么?
如何避免WiX/MSI部署解决方案中的常见设计缺陷?
部署是大多数开发的关键部分 - 部署失败意味着您的最终用户永远无法评估您的产品.这很容易成为软件开发中最昂贵的错误.请给这个内容一个机会.我坚信,通过应用程序设计的微小变化可以显着提高软件质量,使部署更加合理,更可靠 - 这就是"答案"的全部 - 软件开发.
这是一个Q/A风格的问题,答案只列出了MSI文件中不要做的一些事情,以避免最常见的设计缺陷.
windows-installer installshield wix advanced-installer installshield-le
如果您需要安装100%.NET产品,您是否应该更喜欢MSI安装程序?为什么?
我们来讨论以下主题.目前正在部署的应用程序有很好的知道xcopy方法.这种方法很难管理依赖项,文件更新等.有一些软件包的帮助下启动应用程序部署的想法,你知道你在Linux的帮助下RPM,但适用于Windows.
所以我有疑问:在Windows经典Windows安装程序(msi)或nuget或其他东西上使用什么包系统更好?
您可能知道,msiexec是一个命令行应用程序,可用于安装MSI文件.您可能知道,您可以在静默或不可见模式下运行它.
如果安装程序要求用户回答有关要安装的部件的具体问题,是否有一些方法可以在msiexec命令行中添加一系列选项来执行此操作?
我认为必须有某种方法来设置MSI文件的默认设置才能实现这一点.MSI文件是如何制作的?它们是通过微软的工具开发的吗?他们可以打开和编辑吗?
如何对两个(或更多)MSI文件进行 " 内容比较 " 并查看文件内部实际不同的内容 - 而不是进行无用的二进制比较?(这显然只告诉我我是否正在处理同一文件的副本).
一些相关和典型的问题场景:
这是一个Q/A风格的问题,主题是比较已编译的MSI文件以确定存在哪些真正的"内容差异".
我有一个 C#/WPF 应用程序,它比简单的应用程序更高级 - 它有主应用程序、几个库,然后是一些 NuGet 包。如果我查看项目的 bin/release/netcoreapp3.1 目录,会发现有一个 EXE、几个 JSON 和一堆 DLL(其中一些具有 PDB)。没什么太疯狂的。客户想要一个听起来不像不合理要求的安装程序。
我首先尝试了 Visual Studio 2019 附带的安装程序,但惊讶地发现它是多么无用。删除后,我上网查了一下,发现WiX似乎比较流行。好吧,我说,我会尝试一下。
安装WiX Toolset Build Tools(听起来有点多余)和WiX Toolset Visual Studio Extension并重新启动 Visual Studio 后,看起来不错。我右键单击我的解决方案,选择“添加”和“新项目”,然后看到“Setup Project for WiX v3”,看起来不错。我单击“下一步”,将其命名为“安装程序”,然后我得到:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="Installer" Language="1033" Version="1.0.0.0" Manufacturer="" UpgradeCode="2995de5a-87ef-443d-a25a-450d39720349">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="Installer" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir"> …Run Code Online (Sandbox Code Playgroud) wix ×8
installer ×4
.net ×2
installation ×2
orca ×2
extract ×1
msiexec ×1
msitransform ×1
nuget ×1