任何人都可以在VS2008(C#)Pro中创建安装程序的好"白痴指南"吗?

pax*_*blo 10 c# wpf console installer visual-studio-2008

我有Visual C#2008 Professional并开发了C#应用程序的前半部分(控制台模式),现在正在进行后半部分(GUI).

我正在寻找一条为它创建安装程序的简单途径.生产专业安装人员需要采取哪些步骤?

有一个类似的问题在这里关于Express版本,但我有临了,我想尽可能多地坚持只用VS东西的标准(如果你认为你能说服我,一个第三方的安装创造者是比VS更好 - 只有解决方案,一定要试一试).

请记住,我没有兴趣升级到VS2010,即使创建安装程序要容易一百倍.这可能会在以后,当收入开始滚动:-)

另请注意,此应用程序的GUI组件是与控制台部分完全独立的可执行文件.控制台部分是一个简单的"打开文件1,对它做一些工作,写入文件2"类型,GUI是一个相当标准的"打开文件,做一些东西"野兽,因此没有发生棘手或严重无证的行为.

基本上,我正在寻找(至少)以下内容:

  • 专业的安装人员.
  • 能够指定其中的应用程序文件去.
  • 更改注册表以允许双击我的文件扩展名以文件作为参数打开GUI应用程序.
  • 需要安装所需的一切(我的东西,.Net,如果需要,等等).

Pat*_*lug 24

这可能比答案更有点咆哮但是在这里.

如果Windows客户端软件严重破坏了一件事,那就是部署应用程序.

我的经验来自于NovaMind的工作- 尽管我多年来一直在设置问题上花了几周时间,但我并不是设置技术的专家,我尽可能地专注于我们的实际产品.我们使用了InnoSetup,Visual Studio Setup Project 2008/2010,最后我们改用了WiX + Tools方法.

你现在如何安装应用程序?

网络应用程序:在浏览器中输入URL以访问网络应用程序.

Mac:将下载的文件(x64和x86相同)拖动到Mac上的"应用程序"图标.完成.

Windows:下载正确的文件(用户需要了解x64和x86架构),执行它.单击"下一步"十几次,等待UAC显示,单击"是",然后希望安装程序做对了.

我认为,如果Windows拥有更好的部署系统,理智的市场/应用程序商店和适当的实时更新功能,那么Web应用程序可能永远不会首先受欢迎.当然这是夸大其词但我相信通过不提供一个理智,可用的部署模型已经对Windows应用程序生态系统造成了很大的破坏,甚至现在微软似乎很少关注这个问题.

你如何更新应用程序?

网络应用:不需要.它是最新的.

Mac:没有内置魔法,但有一种广泛使用的强大解决方案,名为Sparkle.

Windows:你最好自己动手,因为没有什么实质性的.

ClickOnce应该已经改变了所有这些但是无法用于真正的商业应用程序.

这是破旧:

InnoSetup和其他基于脚本的安装很简单,但无法生成.msi文件 - 有些公司需要.msi文件来自动化网络部署.如果要获得Windows徽标认证,还需要安装基于Windows Installer(.msi)的设置.

Visual Studio安装项目2008/2010可以轻松地为您提供基础知识,您可以配置很多东西,但是一旦您想要做出不可思议的事情,比如使用高质量的图标或在您的设置中包含一组更改的文件,那就搞砸了.我们还必须每次构建更新时手动修复PackageCode和ProductCode,因为Visual Studio设法以某种方式搞乱程序集版本并在更新时留下较旧的程序集,从而破坏应用程序.

WiX是在Windows上创建设置的事实上的方式,甚至可以使用WiX创建Microsoft Office安装程序.WiX并不简单.有可用于WiX的书籍!

不幸的是,单靠WiX仍然不是一个好的解决方案.我们使用dotNetInstaller引导程序的项目,以确保在安装.NET Framework和.msi文件和引导程序包装成一个单一的.exe文件,人们可以下载.

有了这一切你很好.总有一些奇怪的病例客户不必安装Windows安装程序(因此不能运行嵌入式.msi文件),或在.NET Framework安装失败.

到目前为止我们无法做到的事情:

  • 本地化安装程序!
  • 提供两个x64和x86单次下载 - 此刻,我们只能创建86安装程序,因为我们不希望我们的用户考虑一下64与86.
  • 有一个很好的设置UI,也适用于高DPI设置.我认为这可能只是MSI设置中不支持的事情.

有一个名为SharpSetup的免费产品似乎可以解决其中的一些问题并允许您编写基于Winforms的UI,但是SharpSetup没有自带的引导程序并且需要.NET Framework - 但是您可以编写自己的C++代码来做出反应在这种情况下.

对于实时更新,我们已经推出了自己的解决方案,经过许多问题后,它正常运行.

您可能还想听听Scott Hanselman与Rick Brewster的播客节目他们谈论Paint.NET的设置和部署 - 虽然我祝贺Rick和Paint.NET团队的良好设置,这种复杂解决方案的必要性我.

如果您绝对需要使用.msi,那么我会向想要在Windows上创建安装程序的人推荐WiX,但最后我对Windows上的部署情况感到非常沮丧.多年来,我浪费了数周的时间来处理愚蠢的设置问题.通过设置,您只能输.你不会赢得任何满意的客户,因为你的设置有效,但如果没有,你会失去并挫败很多客户.


And*_*ect 9

另一种选择是使用Inno Setup.它允许您完全自定义安装,在目标计算机上粘贴文件的位置,修改注册表以及所有爵士乐.如果您愿意花更多的时间来学习实现所需结果所需的脚本,那么这是一个非常强大的工具.(满足您的所有要求和更多)最重要的是,它是免费的=)

我一直在使用Inno Setup来处理所有较大的.NET程序.安装程序运行时,它会检查是否安装了.NET,如果没有,则下载并安装它.同样,我修改了注册表并与你提到的扩展程序建立了联系.将DLL包含在安装程序中也很简单 - Inno会将所有必需的文件整合到一个可处理所有内容的可执行文件中.

此外,自从1997年以来Inno一直存在,一些编辑器已经出现,有助于使脚本编写过程更容易.


gre*_*man 5

我使用Advanced Installer,它很简单,我使用它,因为VS的局限性.

http://www.advancedinstaller.com/

"缺点"是,为了全自动安装依赖项,你必须支付;-)