标签: windows-installer

WiX 将 ExePackage 添加到产品以安装 vcredist

我想将 VC++ Redistributable 2013 添加到现有的工作 WiX 项目中。该项目由一个带有一个<Product>元素的主文件组成,其中包含一个<Feature>和一个<InstallExecuteSequence>元素以及其他一些元素。

我发现您可以使用<ExePackage>fromBurn来安装.exe文件(在我的例子中是可再发行文件)。我形成了一个片段,如下所示(在此处的帮助下):

<Fragment>
    <PackageGroup Id="VC13RedistX86">
      <ExePackage
        Cache="no"
        Compressed="yes"
        PerMachine="yes"
        Permanent="yes"
        Vital="yes"
        Name="Resources\vcredist_x86.exe"
        SourceFile="Resources\vcredist_x86.exe"
        InstallCommand="/install /quiet /norestart">

        <!-- -->
        <ExitCode Value="3010" Behavior="forceReboot"/>
        <!-- Ignore "Newer version installed" error -->
        <ExitCode Value="1638" Behavior="success"/>
      </ExePackage>
    </PackageGroup>
</Fragment> 
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法将其纳入我现有的 WiX 产品中?如果没有办法,如何将原始安装程序和<ExePackage>

windows-installer wix wix3.5 vcredist

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

WIX 不卸载旧版本

经过一番谷歌搜索后,我想出了一个配置,该配置应该允许我仅安装包的较新版本(它确实如此),同时替换旧的、已安装的版本(它没有)

我的wxs文件如下:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*"
             Name="Gdml File Viewer" Language="1033"
             UpgradeCode="5fb07c15-32a5-4b8a-9794-e4425bfc2eea"
             ...>
        <Package InstallerVersion="200"
                 Compressed="yes"
                 InstallScope="perMachine" Platform="x64" />
        <MajorUpgrade Schedule="afterInstallValidate"
                      DowngradeErrorMessage="A later version of [ProductName] is already installed"
                 AllowSameVersionUpgrades="no"
                 AllowDowngrades="no" />
...

Run Code Online (Sandbox Code Playgroud)

正如预期的那样,它确实允许我安装较新的版本,但旧版本未卸载。它仍然显示在“应用程序和功能”列表中:

应用程序和功能

(另一个实例的版本为2019.14.181.35181)

windows-installer wix

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

有没有办法在不使用MSI的情况下部署.Net应用程序?

我有一个.Net程序,我想在终端服务器上安装.在过去,我已经创建了安装程序项目并生成了一个MSI.但是,终端服务器要求在运行MSI之前将所有用户都关闭,我想避免这种情况.有没有办法在没有MSI的情况下进行安装?

有时对于某些用户帐户,我只需复制.exe并使用它.但是对于其他用户而言,这样做会对显然存在的文件引发奇怪的"文件未找到"错误.(显然,如果没有通过MSI"正式"安装exe,那么运行.net exe必须存在的注册表设置可能存在也可能不存在?)

.net windows deployment install windows-installer

0
推荐指数
1
解决办法
1174
查看次数

将许可证信息添加到NSIS安装程序

我们通过NSIS生成的Windows安装程序分发由我的小组创建的软件.我们从不再与我们合作的开发人员编写的python脚本生成我们的NSIS配置文件,因此我们目前没有任何人知道如何编写NSIS配置文件.我的任务是修改此脚本,在安装程序中添加一个部分,在执行实际安装之前显示我们的许可信息.

NSIS配置文件中的这样一个部分是什么样的?

windows installer windows-installer nsis

0
推荐指数
1
解决办法
4127
查看次数

Nant构建MSI文件

我如何使用NAnt来构建msi文件

谢谢

nant windows-installer

0
推荐指数
1
解决办法
2856
查看次数

为什么这么多msvcp80.dll?

我的电脑msvcp80.dll在不同的目录中有这么多.并且有不同的版本:

8.00.50727.762
8.00.50727.1433
...
Run Code Online (Sandbox Code Playgroud)

应用程序使用其目录下的版本作为私有程序集具有优势.

我还找到了msvcp80.dll的副本c:\windows\system32.

  1. 我可以找出安装了哪个应用程序c:\windows\system32\msvcp80.dll吗?

感谢您的回答和评论提前.

windows dll installer windows-installer visual-c++

0
推荐指数
1
解决办法
549
查看次数

哪些是学习Windows Installer技术的最佳来源?

我想知道您是否可以共享您认为与学习Windows Installer最相关的一些(可信)信息源(书籍,URL).它们可以用于开始这项技术,也可以用于高级或专业级别的知识.

未来的部署工程师可以从哪里开始,他/她可以在哪里继续保持正确的方向(一步一步)?

windows windows-installer wix

0
推荐指数
2
解决办法
716
查看次数

为什么卸载后不会删除"开始"菜单快捷方式?

当我安装.msi文件时,我在开始菜单和桌面上生成快捷方式,但是当我卸载桌面快捷方式时,会删除但是开始菜单.我的代码是吼叫.请帮我解决我的问题.我花了差不多一天的时间.

<Directory Id="ProgramMenuFolder">
   <Directory Id="ProgramMenuSubfolder" Name="Kiosk">
      <Component Id="ApplicationShortcuts" Guid="12345678-1234-1234-1234-333333333333">
         <Shortcut Id="ApplicationShortcut1" Name="Kiosk" Description="Solusoft Product" Target="[INSTALLDIR]AMP\1.0.0.0\mpkiosk.exe" WorkingDirectory="INSTALLDIR"/>
         <RegistryValue Root="HKCU" Key="Software\Kiosk" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
         <RemoveFolder Id="ApplicationShortcut1" On="uninstall"/>
      </Component>
   </Directory>
</Directory>
Run Code Online (Sandbox Code Playgroud)

windows-installer wix

0
推荐指数
1
解决办法
6482
查看次数

在卸载期间从C#自定义操作显示WiX对话框

我在从快捷方式运行的卸载序列中显示对话框时遇到问题,并使用基本UI添加/删除程序.它似乎正在跳过修改和安装期间显示的InstallUISequence:

<!--Displays uninstall options before uninstall progress dialog WixUI_InstallMode = "Remove"-->
<InstallUISequence>
    <Show Dialog="UninstallDialog" Before="ProgressDlg">WixUI_InstallMode = "Remove"</Show>
</InstallUISequence>
Run Code Online (Sandbox Code Playgroud)

但是,重要的是我在基本卸载序列期间运行此对话框也很重要.是否可以从InstallExecuteSequence的C#自定义操作运行中显示在WiX中定义的对话框?如果是这样,我该怎么做呢?有没有教程?我想要显示的对话框如下所示:

<!--Dialog used to obtain uninstall options from user-->
<Dialog Id="UninstallDialog" Width="120" Height="100" Title="Options">
    <Control Id="DelDatabaseCheckBox" Type="CheckBox"
             X="15" Y="10" Width="90" Height="17" Property="DELDATABASE"
             CheckBoxValue="1" Text="Delete Database"/>

    <Control Id="DelSettingsCheckBox" Type="CheckBox"
             X="15" Y="30" Width="90" Height="17" Property="DELSETTINGS"
             CheckBoxValue="1" Text="Delete Settings"/>

    <Control Id="DelErrorLogCheckBox" Type="CheckBox"
             X="15" Y="50" Width="90" Height="17" Property="DELERRORLOG"
             CheckBoxValue="1" Text="Delete Error Log"/>

    <Control Id="ConfirmUninstall" Type="PushButton" X="22" Y="75" Width="70" Height="17" Text="Ok">
        <Publish Event="EndDialog" Value="Return">1</Publish>
    </Control>
</Dialog>
Run Code Online (Sandbox Code Playgroud)

c# windows-installer custom-action wix

0
推荐指数
1
解决办法
1766
查看次数

根据WiX中的条件设置属性值

我在Stack Overflow搜索了几个问题,但没有任何帮助.问题是:

我在注册表中查找了一些值(我知道该怎么做).我知道如何设置财产.但是我找不到如何在WiX中编写这个表达式的方法.这是我想用伪代码写的:

if(registryvalue contains substring1)
    set property to value1
if(registryvalue contains substring2)
    set property to value2
Run Code Online (Sandbox Code Playgroud)

必须在运行时评估此条件.有没有办法写这个条件?一些示例代码会是什么样的?

windows-installer wix

0
推荐指数
1
解决办法
6175
查看次数