相关疑难解决方法(0)

如何在WiX中创建用户输入的自定义对话框?

我正在使用WiX为Windows服务创建安装程序.在服务中安装和显示的服务名称在安装时是可配置的.

例如,这就是我的想法(wix xml snip):

<ServiceInstall 
    Id="MyServiceInstaller" 
    Name="NAME_PASSED_FROM_DIALOG" 
    Type="ownProcess" 
    Start="auto" 
    ErrorControl="normal" 
    Description="My Service" 
    Account="localsystem"/> 

<ServiceControl
    Id="StartMyServiceInstaller" 
    Name="NAME_PASSED_FROM_DIALOG" 
    Start="install"
    Wait="no" />

<ServiceControl
    Id="StopMyServiceInstaller" 
    Name="NAME_PASSED_FROM_DIALOG" 
    Remove="uninstall"
    Stop="both"
    Wait="yes" />
Run Code Online (Sandbox Code Playgroud)

NAME_PASSED_FROM_DIALOG是我想要连接到自定义对话框的东西,该对话框被创建并显示给安装服务的人员,以便他们可以设置/修改服务名称.我认为这与设置并传递给WixUI_InstallDir对话框的WIXUI_INSTALLDIR属性非常相似.

我的问题是:

如何创建可以接受传递到安装程序运行时的用户输入的自定义UI对话框?

installer wix

27
推荐指数
2
解决办法
4万
查看次数

Wix主要升级:如何防止重新安装Windows服务?

我正在开发一个应该安装多个Windows服务的安装程序.我们经常制作新版本(使用新的.msi文件),并且我们使用主要升级使其易于安装在以前的安装中.

问题是我们需要更新服务文件而不覆盖服务配置(例如帐户用户名和密码).

我们使用ServiceInstallServiceControl保存该服务的组件内部exe文件.有没有办法使ServiceInstall条件的执行(使用类似条件REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE)所以升级时没有卸载服务(刚刚停止,所以我们可以升级文件)?

一种解决方案是使用自定义操作,但也许有更好的方法?

谢谢!

windows-installer wix

14
推荐指数
1
解决办法
4393
查看次数

WiX MajorUpgrade of Windows Service,保留.config,并避免重启

我正在努力让MajorUpgrade,ServiceControl,.config文件很好地协同工作. 在我的另一个问题之后,我现在又有了相反的问题.

以前,文件没有被覆盖,因为AssemblyFileVersions是静态的所以我修复了它. 1)现在,即使Schedule="afterInstallExecute"我的KeyPath='yes' .config文件仍被覆盖,即使现有文件修改日期与文件创建日期不同,它也被设置为KeyPath.我目前不得不覆盖.config文件并在安装后重新启动服务.

2)即使我解决了这个问题,我仍然有一个避免重启的问题.如果我说Schedule="afterInstallInitialize"那么我相信.config文件肯定会过早地与服务一起删除.如果我说Schedule="afterInstallExecute"那么服务没有停止,安装后需要重新启动.(那是对的,对吗?)在安装之前手动停止服务让我避免重启.添加net stop自定义操作可能会取代ServiceControl我的想法,但是正确地获得所有条件似乎很复杂.

3)作为奖励,我想在升级期间根本不删除服务.我可以停止服务,替换二进制文件,然后再次启动服务吗?这将避免重新输入服务帐户凭据以进行升级.但是当然它仍然需要在首次安装时卸载并卸载功能.

这是它的主要内容(以后也捆绑在一起,以防万一在某种程度上很重要):

<MajorUpgrade DowngradeErrorMessage="A newer version is already installed." 
              Schedule="afterInstallExecute" />

<ComponentGroup Id="ServiceCG">
    <Component Id="Service" Guid='*' Win64='yes' Directory='INSTALLDIR'>
        <File Id='ServiceEXE' Source='$(var.root)Service.exe' />
        <ServiceInstall Id="ServiceInstall"
                          Name="MyService"
                          DisplayName="My Server"
                          Type="ownProcess"
                          Start="auto"
                          ErrorControl="normal"
                          Description="My Server Service"
                          Interactive="no"
                          Account="[...]"
                          Password="[...]" />
        <ServiceControl Id="StopService" Name="MyService" Start="install" 
                        Stop="uninstall" Wait="yes" Remove="both" />
        <util:User Id="UpdateServiceAccountLogonAsService" …
Run Code Online (Sandbox Code Playgroud)

installer windows-installer wix major-upgrade

10
推荐指数
1
解决办法
1888
查看次数

让用户指定服务运行的帐户

我有一个Windows服务,应该在安装过程中由用户指定的域帐户运行.

如何使用Wix安装程序(即询问用户该服务应使用的帐户+密码)?

背景

我的服务需要访问网络共享,LocalSystem并且没有适当的权限,因此我想使用现有的域用户帐户.

wix

6
推荐指数
1
解决办法
5995
查看次数

如何在wix中进行重大升级时停止并且不卸载Windows服务?

我正在开发一个应该在wix v3.8中安装Windows服务的安装程序.问题是我们需要进行重大升级而不卸载服务只是为了阻止它.

我们在包含服务exe文件的组件中使用ServiceInstall和ServiceControl.有没有办法使ServiceInstall的执行有条件(使用像REMOVE ="ALL"和NOT UPGRADINGPRODUCTCODE这样的条件)所以升级时没有卸载服务(刚刚停止,所以我们可以升级文件)?

一种解决方案是使用自定义操作,但也许有更好的方法?

谢谢!

service wix upgrade

4
推荐指数
1
解决办法
1746
查看次数