在工作中,我们使用WiX来构建安装包.我们希望安装产品X会导致在该计算机上卸载该产品的先前版本.
我已经在互联网上的几个地方读过有关重大升级的内容,但无法让它发挥作用.任何人都可以指定我需要采取的确切步骤,以便将卸载以前的版本功能添加到WiX吗?
我搜索了很多,但都猜到了答案.帮我找到确切的答案.
我的Wix项目创建了install.msi和cab1.cab.我怎么能把它捆绑到msi中?我可能会使用7-zip SFX来解决这个问题,但我看到其他只有一个msi的应用程序.
我想修改MSI安装程序(通过WiX创建)以在卸载时删除整个目录.
我理解WiX中的选项RemoveFile
和RemoveFolder
选项,但是它们不够强大,无法递归删除安装后创建内容的整个文件夹.
我注意到类似的Stack Overflow问题在卸载WiX时删除文件,但我想知道是否可以通过调用批处理脚本删除文件夹来更简单地完成此操作.
这是我第一次使用WiX,而且我仍然掌握了自定义操作.在卸载时运行批处理脚本的自定义操作的基本示例是什么?
如何为使用Visual Studio创建的Windows服务创建安装程序?
我创建一个小应用程序,我想创建一个MSI文件.
在Visual Studio 2010中,您有以下项目类型:
其他项目类型 - > 设置和部署 - > Visual Studio安装程序 - > 安装项目
但是,您在Visual Studio 2012中唯一获得的是"启用InstallShield限制版".
您可以更改.NET Framework,但没有任何更改.
为什么不再有了?我该怎么办呢?有没有新的方法来做到这一点?
installer windows-installer project-types visual-studio-2012
有没有一种简单的方法可以使用PowerShell 挂钩标准的" 添加或删除程序 "功能来卸载现有的应用程序?或者检查是否安装了应用程序?
什么是Wix'KeyPath '属性?特别是,它如何适用于以下内容:
<Component Id="ProgramMenuDir" Guid="*">
<RemoveFolder Id="ProgramMenuDir" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software\CompName\AppName"
Type="string" Value="" KeyPath="yes" />
</Component>
Run Code Online (Sandbox Code Playgroud) 在自动构建中使用devenv时,我一直收到此错误.我已经浏览了我能找到的每个网站,并且通常的答案提到了刷新的依赖关系(我认为它修复了它用于手动部署,但不用于自动)并从项目中删除源代码控制编码,这对我没有帮助.
每次构建时都不会发生错误,但每次在不同的部署项目上似乎都是随机的.
有没有人对为什么会出现这个错误以及如何修复它有任何建议?
所以我们已经制作了一个Windows服务来将数据提供给我们的客户端应用程序,一切都很顺利.客户端提出了一个有趣的配置请求,该请求要求在同一服务器上运行此服务的两个实例,并将其配置为指向不同的数据库.
到目前为止,我还没有能够实现这一点,并希望我的同事stackoverflow成员可以提供一些提示,为什么.
目前的设置:
我已经设置了包含windows服务的项目,从现在开始我们称之为AppService,以及处理自定义安装步骤的ProjectInstaller.cs文件,根据App.config中的键设置服务名称,如此:
this.serviceInstaller1.ServiceName = Util.ServiceName;
this.serviceInstaller1.DisplayName = Util.ServiceName;
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Util只是一个静态类,可以从配置文件中加载服务名称.
从这里开始,我尝试了两种不同的方法来安装这两种服务,并且都以相同的方式失败.
第一种方法是简单地安装服务的第一个副本,复制已安装的目录并重命名,然后在修改应用程序配置后运行以下命令以更改所需的服务名称:
InstallUtil.exe /i AppService.exe
Run Code Online (Sandbox Code Playgroud)
当这不起作用时,我尝试创建第二个安装程序项目,编辑配置文件并构建第二个安装程序.当我运行安装程序时它工作正常,但服务没有显示在services.msc中,所以我针对第二个安装的代码库运行了上一个命令.
两次我都收到了InstallUtil的以下输出(仅限相关部分):
运行事务安装.
开始安装的安装阶段.
安装服务App Service Two ... Service App Service 2已成功安装.在日志应用程序中创建EventLog源App Service二...
安装阶段发生异常.System.NullReferenceException:未将对象引用设置为对象的实例.
安装的回滚阶段正在开始.
将事件日志还原到源App Service 2的先前状态.服务应用程序服务2正在从系统中删除...服务应用程序服务2已成功从系统中删除.
回滚阶段成功完成.
事务处理安装已完成.安装失败,并且已执行回滚.
对于冗长的帖子感到抱歉,想确保有足够的相关信息.到目前为止已经难倒我的部分是,它指出该服务的安装成功完成和它关系到创建的NullReferenceException异常似乎得到抛出的事件日志源之后.因此,如果有人知道我做错了什么或有更好的方法,那将非常感激.
installer ×4
wix ×4
.net ×2
windows ×2
c# ×1
devenv ×1
hresult ×1
installutil ×1
powershell ×1
uninstall ×1