ExeCommand 到 运行 作为当前用户
ExeCommand to run as current user
我正在努力让我的安装程序启动新安装的可执行文件(用 C# 编写)。无论我尝试做什么,它都会记录 1721 错误。有效的是:
1. 我 运行 安装程序
2.等待失败
3. 使用 /l*v
生成的日志文件中记录的命令行参数从安装位置启动 exe
因此,该文件似乎已安装到具有所有有效数据和文件权限的正确位置。只是 运行 不是在正确的用户帐户下(可能)?
有什么想法吗?
起初我是这样解决问题的:
<CustomAction Id="DbInstallerExec"
Directory="SETUPFOLDER"
Impersonate="yes"
Execute="deferred"
ExeCommand='"[SETUPFOLDER]DBInstaller.exe"
[DB_SERVER] [DB_DATABASE]
[PPME_BASE_DATA_FOLDER] [%TEMP]
[SETUPFOLDER] ImportData SqlScripts'
Return="check" />
目录属性似乎至少让可执行文件启动,但它无法执行某些操作并且仍然返回错误代码。为了解决这个问题,我将 Impersonate 更改为 "yes".
我的第二次改进尝试如下:
(这允许控制台应用程序从视图中隐藏启动,这似乎更专业一点)
出于某种原因,WixQuietExec(带有 SetProperty)对我不起作用,但 CAQuietExec 确实起作用:
<CustomAction Id="DbInstallerExec_Cmd"
Property="DbInstallerExec"
Value='"[SETUPFOLDER]DBInstaller.exe"
[DB_SERVER] [DB_DATABASE] [PPME_BASE_DATA_FOLDER]
[%TEMP] [SETUPFOLDER] ImportData SqlScripts' />
<CustomAction Id="DbInstallerExec"
BinaryKey="WixCA"
DllEntry="CAQuietExec"
Execute="deferred"
Impersonate="yes"
Return="check" />
<InstallExecuteSequence> ...
<Custom Action="DbInstallerExec_Cmd" Before="DbInstallerExec">
UPGRADINGPRODUCTCODE OR (NOT REMOVE = "ALL")
</Custom>
<Custom Action="DbInstallerExec" Before="InstallFinalize">
UPGRADINGPRODUCTCODE OR (NOT REMOVE = "ALL")
</Custom>
</InstallExecuteSequence> ...
我正在努力让我的安装程序启动新安装的可执行文件(用 C# 编写)。无论我尝试做什么,它都会记录 1721 错误。有效的是: 1. 我 运行 安装程序 2.等待失败 3. 使用 /l*v
生成的日志文件中记录的命令行参数从安装位置启动 exe因此,该文件似乎已安装到具有所有有效数据和文件权限的正确位置。只是 运行 不是在正确的用户帐户下(可能)?
有什么想法吗?
起初我是这样解决问题的:
<CustomAction Id="DbInstallerExec" Directory="SETUPFOLDER" Impersonate="yes" Execute="deferred" ExeCommand='"[SETUPFOLDER]DBInstaller.exe" [DB_SERVER] [DB_DATABASE] [PPME_BASE_DATA_FOLDER] [%TEMP] [SETUPFOLDER] ImportData SqlScripts' Return="check" />
目录属性似乎至少让可执行文件启动,但它无法执行某些操作并且仍然返回错误代码。为了解决这个问题,我将 Impersonate 更改为 "yes".
我的第二次改进尝试如下:
(这允许控制台应用程序从视图中隐藏启动,这似乎更专业一点)
出于某种原因,WixQuietExec(带有 SetProperty)对我不起作用,但 CAQuietExec 确实起作用:
<CustomAction Id="DbInstallerExec_Cmd" Property="DbInstallerExec" Value='"[SETUPFOLDER]DBInstaller.exe" [DB_SERVER] [DB_DATABASE] [PPME_BASE_DATA_FOLDER] [%TEMP] [SETUPFOLDER] ImportData SqlScripts' /> <CustomAction Id="DbInstallerExec" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Impersonate="yes" Return="check" /> <InstallExecuteSequence> ... <Custom Action="DbInstallerExec_Cmd" Before="DbInstallerExec"> UPGRADINGPRODUCTCODE OR (NOT REMOVE = "ALL") </Custom> <Custom Action="DbInstallerExec" Before="InstallFinalize"> UPGRADINGPRODUCTCODE OR (NOT REMOVE = "ALL") </Custom> </InstallExecuteSequence> ...