相关疑难解决方法(0)

在Wix Installer中以管理员模式在customAction中运行ExeCommand

我是wix安装程序的新手.我已经为我的应用程序使用wix安装程序开发了一个设置,我需要执行自定义操作以在cmd.exe中运行命令.在XP中它工作正常.但在Windows 8和7中,cmd提示符需要以管理员身份运行.

我用Google搜索并发现关键字Elevated Privileges和impersonate可能对我有所帮助.

<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine"   InstallPrivileges="elevated"></Package>
Run Code Online (Sandbox Code Playgroud)

如上所示,我使用了设置为perMachine的InstallScope属性,并且我在CustomAction元素中使用了Impersonate ="No":

 <CustomAction Id='comReg' Directory='INSTALLLOCATION'  Impersonate='no'  
  ExeCommand='"[NETFRAMEWORK40CLIENTINSTALLROOTDIR]regasm.exe" "[INSTALLLOCATION]myProduct.dll"  /codebase' Return='check' />
Run Code Online (Sandbox Code Playgroud)

但是在安装时我没有得到任何改变.我需要命令提示符以管理员模式打开并运行上述命令.

任何人都可以告诉我这些关键词" 提升权限和模仿"

<InstallExecuteSequence>
  <Custom Action='comReg' After='InstallFinalize'>NOT REMOVE</Custom>
  <Custom Action='comUnreg' Before='RemoveFiles'>REMOVE</Custom>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

怎么做?

installer impersonation wix elevated-privileges wix3.7

22
推荐指数
1
解决办法
3万
查看次数

Wix将项目加载到ComboBox中

我需要使用自定义操作将项目加载到组合框中.

UI.wxs:

            <Control Id="Server" Type="ComboBox" X="30" Y="65" Width="200" Height="18" Property="DATABASE_SERVER">
                <ComboBox Property="DATABASE_SERVER">
                    <ListItem Text="[DATABASE_SERVER]" Value="[DATABASE_SERVER]" />
                </ComboBox>
                <Publish Property="LOGON_VALID" Value="0">1</Publish>
            </Control>
Run Code Online (Sandbox Code Playgroud)

自定义操作

private static ActionResult EnumSqlServersIntoComboBox(Session session, IEnumerable<DataRow> rows)
{
    try
    {
        Debugger.Break();

        session.Log("EnumSQLServers: Begin");

        // Grab the combo box but make sure I'm getting only the one 
        // from WebAppInstallDlg.
        View view = session.Database.OpenView("SELECT * FROM ComboBox WHERE ComboBox.Property='DATABASE_SERVER'");
        view.Execute();

        Int32 index = 1;
        session.Log("EnumSQLServers: Enumerating SQL servers");
        foreach (DataRow row in rows)
        {
            String serverName = row["Name"].ToString();

            // …
Run Code Online (Sandbox Code Playgroud)

wix wix-extension wixlib wix3.6

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