Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix工具集-当安装程序是管理员时,管理员文件不出现_Wix_Windows Installer - Fatal编程技术网

Wix工具集-当安装程序是管理员时,管理员文件不出现

Wix工具集-当安装程序是管理员时,管理员文件不出现,wix,windows-installer,Wix,Windows Installer,我正在尝试为管理手册pdf使用组件条件。如果安装程序在administrators组中,我希望安装admin手册。下面是我如何设置它的,但即使安装程序是管理员,也不会安装它。我错过了什么 要求: InstallScope=“perUser”/ <Condition>Privileged</Condition> 特权 发现如下: <Component Id="cmp_ManualForAdmins.pdf" Guid="4C28B047-74D2-4642-A1

我正在尝试为管理手册pdf使用组件条件。如果安装程序在administrators组中,我希望安装admin手册。下面是我如何设置它的,但即使安装程序是管理员,也不会安装它。我错过了什么

要求:

InstallScope=“perUser”/

<Condition>Privileged</Condition>
特权
发现如下:

 <Component Id="cmp_ManualForAdmins.pdf" Guid="4C28B047-74D2-4642-A180-0039B4C2C5BC">
    <File Id="fil_ManualForAdmins.pdf" Name="ManualForAdmins.pdf" Source="$(var.WindowsFormsApp1_TargetDir)ManualForAdmins.pdf">
      <Shortcut Id="startMenuAdminManual" Directory="ProgramMenuSubFolder" Name="AdminManual"></Shortcut>
    </File>
    <Condition>Privileged</Condition>
  </Component>

有特权的

我只是花了一个小时研究这个问题,没有什么好的答案。因为MSI是从标准用户进程调用的,不需要提升,所以MSI从不知道用户可以提升,所以不会设置特权属性

我认为一个自定义操作可能有助于解决这个问题,但搜索C#Detect Admin会发现各种具有相同行为的类和API调用

如果从提升的命令提示符安装原型MSI,则条件计算为true,并安装“admin.txt”文件。未从非高架位置安装

那我该怎么办?两件事之一:

1) 制作第二个Docs MSI,它是需要提升的permachine安装


2) 构建并部署docs.exe,该文件显示为需要管理员。如果程序成功升级,则让它将PDF从嵌入式资源提取到临时目录,并执行ShellExecute以启动带有该文件的默认PDF查看器。

我刚刚花了一个小时研究了这个问题,但确实没有任何好的答案。因为MSI是从标准用户进程调用的,不需要提升,所以MSI从不知道用户可以提升,所以不会设置特权属性

我认为一个自定义操作可能有助于解决这个问题,但搜索C#Detect Admin会发现各种具有相同行为的类和API调用

如果从提升的命令提示符安装原型MSI,则条件计算为true,并安装“admin.txt”文件。未从非高架位置安装

那我该怎么办?两件事之一:

1) 制作第二个Docs MSI,它是需要提升的permachine安装

2) 构建并部署docs.exe,该文件显示为需要管理员。如果程序成功提升,则让它将PDF从嵌入式资源提取到临时目录,并执行ShellExecute以启动带有该文件的默认PDF查看器。

:管理员通常执行管理安装(文件提取)至少如果他们在进行应用程序打包的大公司工作的话。因此,我倾向于让这样的文件在提取的源媒体上很容易看到,而不是在正常安装过程中安装它们(或者两者都安装,或者两者都安装,不管是哪一种)

示例管理安装(美化文件提取):

Admin.pdf:下面是一个我没有广泛测试过的快速破解
admin.pdf将在文件提取期间显示,而不是在安装期间显示

<..>

<Feature Id="MainApplication" Title="MainApplication" Level="1">
  <Feature Id="SomeFiles" Title="SomeFiles" Level="1" />

  <!-- Remove "Display" attibute to show Admin feature in normal setup GUI -->
  <Feature Id="Admin" Title="Admin" Level="1001" Display="hidden" />

</Feature>

<Directory Id="TARGETDIR" Name="SourceDir">

  <Component Id="AdminManual" Feature="Admin" Guid="{00000000-0000-0000-0000-0000DBFB0000}">
    <File Source="D:\Admin.pdf"  />
  </Component>

<..>
管理功能在正常安装GUI中隐藏。更改属性“Display”以更改此设置。例如,为了测试目的,只需将其删除即可。

:管理员通常会执行安装程序的管理安装(文件提取)——至少如果他们在进行应用程序打包的大公司工作的话。因此,我倾向于让这样的文件在提取的源媒体上很容易看到,而不是在正常安装过程中安装它们(或者两者都安装,或者两者都安装,不管是哪一种)

示例管理安装(美化文件提取):

Admin.pdf:下面是一个我没有广泛测试过的快速破解
admin.pdf将在文件提取期间显示,而不是在安装期间显示

<..>

<Feature Id="MainApplication" Title="MainApplication" Level="1">
  <Feature Id="SomeFiles" Title="SomeFiles" Level="1" />

  <!-- Remove "Display" attibute to show Admin feature in normal setup GUI -->
  <Feature Id="Admin" Title="Admin" Level="1001" Display="hidden" />

</Feature>

<Directory Id="TARGETDIR" Name="SourceDir">

  <Component Id="AdminManual" Feature="Admin" Guid="{00000000-0000-0000-0000-0000DBFB0000}">
    <File Source="D:\Admin.pdf"  />
  </Component>

<..>

管理功能在正常安装GUI中隐藏。更改属性“Display”以更改此设置。例如,为了测试目的,只需删除它。

我想一些调用可以确定用户组成员身份,即使是广告?看看我的替代解决方案——对你有意义吗?我想这取决于你必须对普通用户“隐藏”admin.pdf的程度(如果他们知道如何进行管理安装,他们可以进行管理安装)。实际上,管理员安装表明,他想要“隐藏”pdf的愿望很容易被挫败。这和ORCA对MSI的编辑。是的,找到了,但现在无法测试。等我回来就行了。不知道这是否受到海拔/UAC等因素的影响。如果他进行每台机器的安装,这一切都会正常工作。我会将此添加到我不按用户安装的原因列表中。我想一些电话可以决定用户组的成员资格-即使是广告?看看我的替代解决方案——对你有意义吗?我想这取决于你必须对普通用户“隐藏”admin.pdf的程度(如果他们知道如何进行管理安装,他们可以进行管理安装)。实际上,管理员安装表明,他想要“隐藏”pdf的愿望很容易被挫败。这和ORCA对MSI的编辑。是的,找到了,但现在无法测试。等我回来就行了。不知道这是否受到海拔/UAC等因素的影响。如果他进行每台机器的安装,这一切都会正常工作。我会将此添加到我不按用户安装的原因列表中。
msiexec /a Test.msi TARGETDIR=D:\ExtractedFiles\