双用途包和 MajorUpgrade
dual purpose package and MajorUpgrade
我正在尝试制作一个双重用途的软件包,但我在升级时遇到了问题。
默认情况下我的 属性 是
ALLUSERS=2
和 MSIINSTALLPERUSER=1
在对话框 readyToInstall
上,如果 "install for all users" 被选中,我使用 SetProperty 放置 ALLUSERS=1
和 MSIINSTALLPERUSER={}
(只是为了确定)。
这部分工作正常,注册表在 HKLM 中设置,文件在 Program Files 中设置。
但是在升级期间...
我有一个自定义操作,在 AppSearch
之后检查键是否在 HKLM 中,它设置了 ALLUSERS=1
和 MSIINSTALLPERUSER={}
.
如果我进行较小的更新,文件会正确升级。
如果我进行重大更新,注册表仍在 HKLM 中,但文件切换为 LocalAppData
(实际上它遵循默认值),忽略我强制 ALLUSERS
到 AppSearch
之后的 1。
(我什至试图在迁移功能状态之后强制它只是为了模仿 UI 但它也没有用)。
有没有办法对双用途包进行重大升级?
根据以下摘录,您似乎面临场景 B:
Major Upgrades can Fail
If you use the Upgrade code feature of Windows Installer to perform a
major upgrade the detection of the existing software will fail if: (a)
the original software was installed with ALLUSERS=””
and the new
software has ALLUSERS=1
in its Property table or passed on the command
line or (b) the original software was installed with ALLUSERS=1
and
the new software has ALLUSERS=””
or ALLUSERS
is not defined in the
Property table or on the command line.
我正在尝试制作一个双重用途的软件包,但我在升级时遇到了问题。
默认情况下我的 属性 是
ALLUSERS=2
和 MSIINSTALLPERUSER=1
在对话框 readyToInstall
上,如果 "install for all users" 被选中,我使用 SetProperty 放置 ALLUSERS=1
和 MSIINSTALLPERUSER={}
(只是为了确定)。
这部分工作正常,注册表在 HKLM 中设置,文件在 Program Files 中设置。
但是在升级期间...
我有一个自定义操作,在 AppSearch
之后检查键是否在 HKLM 中,它设置了 ALLUSERS=1
和 MSIINSTALLPERUSER={}
.
如果我进行较小的更新,文件会正确升级。
如果我进行重大更新,注册表仍在 HKLM 中,但文件切换为 LocalAppData
(实际上它遵循默认值),忽略我强制 ALLUSERS
到 AppSearch
之后的 1。
(我什至试图在迁移功能状态之后强制它只是为了模仿 UI 但它也没有用)。
有没有办法对双用途包进行重大升级?
根据以下摘录,您似乎面临场景 B:
Major Upgrades can Fail
If you use the Upgrade code feature of Windows Installer to perform a major upgrade the detection of the existing software will fail if: (a) the original software was installed withALLUSERS=””
and the new software hasALLUSERS=1
in its Property table or passed on the command line or (b) the original software was installed withALLUSERS=1
and the new software hasALLUSERS=””
orALLUSERS
is not defined in the Property table or on the command line.